diff --git a/crates/socket-patch-cli/tests/e2e_vex_lockfile/poetry.rs b/crates/socket-patch-cli/tests/e2e_vex_lockfile/poetry.rs index c37145a4a..1c095413c 100644 --- a/crates/socket-patch-cli/tests/e2e_vex_lockfile/poetry.rs +++ b/crates/socket-patch-cli/tests/e2e_vex_lockfile/poetry.rs @@ -1014,6 +1014,9 @@ fn every_hosted_pin_spelling_attests_and_a_pinless_entry_needs_an_install() { let lock = p.read("poetry.lock"); let api = api_for(Mode::Hosted); let files_line = format!("files = [{{ file = \"{WHEEL}\", hash = \"sha256:{sha}\" }}]"); + // Lock 2.x keeps Poetry's own one-file-per-line `files` array. + let files_block = + format!("files = [\n {{file = \"{WHEEL}\", hash = \"sha256:{sha}\"}},\n]"); let metadata_entry = format!("{PKG} = [{{ file = \"{WHEEL}\", hash = \"sha256:{sha}\" }}]"); // A `[metadata.files]` entry that listed files before the rewrite // keeps Poetry's one-file-per-line layout (rollback restores the full @@ -1023,6 +1026,7 @@ fn every_hosted_pin_spelling_attests_and_a_pinless_entry_needs_an_install() { let fragment = format!("#sha256={sha}&"); let spellings: Vec<(&str, &str)> = [ ("package files", files_line.as_str()), + ("package files block", files_block.as_str()), ("metadata.files", metadata_entry.as_str()), ("metadata.files block", metadata_block.as_str()), ("url fragment", fragment.as_str()), diff --git a/crates/socket-patch-core/src/utils/poetry_lock.rs b/crates/socket-patch-core/src/utils/poetry_lock.rs index 00b34db1e..3cc377be3 100644 --- a/crates/socket-patch-core/src/utils/poetry_lock.rs +++ b/crates/socket-patch-core/src/utils/poetry_lock.rs @@ -87,6 +87,18 @@ fn legacy_files_entry(table: &dyn TableLike, name: &str, files: Array, rewritten if !populated { return value(files); } + multiline_files(files) +} + +/// `files` laid out one file per line, Poetry's own rendering of a non-empty +/// files array (tomlkit `multiline(True)`): +/// +/// ```toml +/// files = [ +/// {file = "", hash = "sha256:"}, +/// ] +/// ``` +fn multiline_files(files: Array) -> Item { let entries: Vec = files .iter() .filter_map(Value::as_inline_table) @@ -347,7 +359,9 @@ fn mutate_poetry_lock( package.insert("files", value(files.clone())); } if format.starts_with('2') { - package.insert("files", value(files)); + // Poetry 2.x writes every package's `files` one file per line; + // hosted and vendored rewrites both keep that shape. + package.insert("files", multiline_files(files)); } else { let field = if format == "0" { "hashes" } else { "files" }; let table = lock @@ -657,6 +671,50 @@ mod tests { rewrite_poetry_lock(text, "urllib3", "1.26.18", "url", URL, WHEEL, &sha()) } + /// Hosted and vendored rewrites of a 2.x lock write the package's + /// `files` one file per line, the shape Poetry itself writes (#936). + #[test] + fn lock_2x_files_keep_poetrys_multiline_shape() { + let expected = format!( + "files = [\n {{file = \"{WHEEL}\", hash = \"sha256:{}\"}},\n]\n", + sha() + ); + for version in ["1.3.2", "1.8.5", "2.4.3"] { + let original = fixture(version); + for (source_type, url) in [("url", URL), ("file", ".socket/vendor/pypi/x/w.whl")] { + let text = rewrite_poetry_lock( + &original, + "urllib3", + "1.26.18", + source_type, + url, + WHEEL, + &sha(), + ) + .unwrap() + .unwrap(); + assert!(text.contains(&expected), "{version} {source_type}:\n{text}"); + assert!(!text.contains("files = [{"), "{version} {source_type}"); + // Idempotent: a re-run over its own output changes nothing. + assert_eq!( + rewrite_poetry_lock( + &text, + "urllib3", + "1.26.18", + source_type, + url, + WHEEL, + &sha(), + ) + .unwrap() + .as_deref(), + Some(text.as_str()), + "{version} {source_type}" + ); + } + } + } + /// #695: a mixed-ending lock's rewritten unit (and legacy integrity /// entry) takes the ending most of its own lines had, every other line /// keeps its own, and the recorded edits replay back byte for byte @@ -892,12 +950,19 @@ mod tests { "{version}: pristine must not be a prefix of new" ); // A relock that keeps `[package.source]` but drops the inserted - // `files` line must NOT contain the pristine fragment either. - let drifted: String = rewritten - .lines() - .filter(|l| !l.starts_with("files = [{ file")) - .collect::>() - .join("\n"); + // `files` array must NOT contain the pristine fragment either. + // (1.0/1.1 insert it inline, 2.x one file per line.) + let drifted = match rewritten.find("files = [\n {file") { + Some(start) => { + let end = start + rewritten[start..].find("\n]\n").unwrap() + 3; + format!("{}{}", &rewritten[..start], &rewritten[end..]) + } + None => rewritten + .lines() + .filter(|l| !l.starts_with("files = [{ file")) + .collect::>() + .join("\n"), + }; assert!(!drifted.contains(original.as_str()), "{version}"); } // Two adjacent packages: the first fragment ends with the second's diff --git a/crates/socket-patch-core/src/vendor/common.rs b/crates/socket-patch-core/src/vendor/common.rs index 960860da8..5ed2c10c0 100644 --- a/crates/socket-patch-core/src/vendor/common.rs +++ b/crates/socket-patch-core/src/vendor/common.rs @@ -621,17 +621,6 @@ pub(crate) fn pep508_name(spec: &str) -> &str { &s[..end] } -/// Whether a `[[package]]` unit (as its lines) names `canon` — PEP 503 -/// canonical comparison, the form the pypi lock generators record. -pub(crate) fn unit_has_canon_name(lines: &[&str], canon: &str) -> bool { - lines - .iter() - .find_map(|l| l.strip_prefix("name = ")) - .map(|r| canonicalize_pypi_name(r.trim().trim_matches('"'))) - .as_deref() - == Some(canon) -} - /// The lock's `[[package]]` tables whose `name` canonicalizes (PEP 503) to /// `canon_name` — the poetry/pdm target-guard probe (uv records names /// pre-canonicalized and counts them directly instead). diff --git a/crates/socket-patch-core/src/vendor/pypi_poetry.rs b/crates/socket-patch-core/src/vendor/pypi_poetry.rs index f7ba4970c..b290c1daf 100644 --- a/crates/socket-patch-core/src/vendor/pypi_poetry.rs +++ b/crates/socket-patch-core/src/vendor/pypi_poetry.rs @@ -10,12 +10,11 @@ use crate::utils::fs::{atomic_write_bytes_preserving_mode, read_regular_to_strin use super::common::{ ensure_unchanged, item_get, lock_units_named, pep621_declared_names, record, refuse_symlinked, - revert_lock_fragment_splice_atomic, unit_has_canon_name, + revert_lock_fragment_splice_atomic, }; use super::parse_memo::ParseMemo; use super::path::parse_vendor_path; use super::state::{PoetryMeta, VendorEntry, WiringAction, WiringRecord}; -use super::toml_surgery::{find_unit_span, package_unit_lines, replace_files_array}; use super::{RevertOutcome, VendorWarning}; /// The only file this backend ever writes (and the revert allowlist). @@ -316,36 +315,26 @@ pub(super) async fn wire_poetry( PoetryTarget::Fresh => {} } - let edits = - if matches!(p.lock_version.as_str(), "0" | "1.0" | "1.1") || p.lock_text.contains("\r\n") { - let rewrite = crate::utils::poetry_lock::rewrite_poetry_lock_with_edits( - &p.lock_text, - canon_name, - version, - "file", - rel_wheel, - wheel_file_name, - wheel_sha256_hex, - ) - .map_err(|detail| ("pypi_poetry_lock_parse_failed", detail))? - .ok_or_else(|| { - ( - "pypi_poetry_lock_package_missing", - format!("no {canon_name}@{version} in {LOCK_FILE}"), - ) - })?; - rewrite - .edits() - .map_err(|detail| ("pypi_poetry_lock_parse_failed", detail))? - } else { - vec![rewrite_target_package_unit( - &p.lock_text, - canon_name, - rel_wheel, - wheel_file_name, - wheel_sha256_hex, - )?] - }; + // Every lock generation and line ending goes through the shared engine + // hosted mode uses, so both modes write one shape and share its gates. + let edits = crate::utils::poetry_lock::rewrite_poetry_lock_with_edits( + &p.lock_text, + canon_name, + version, + "file", + rel_wheel, + wheel_file_name, + wheel_sha256_hex, + ) + .map_err(|detail| ("pypi_poetry_lock_parse_failed", detail))? + .ok_or_else(|| { + ( + "pypi_poetry_lock_package_missing", + format!("no {canon_name}@{version} in {LOCK_FILE}"), + ) + })? + .edits() + .map_err(|detail| ("pypi_poetry_lock_parse_failed", detail))?; let mut new_lock = p.lock_text.clone(); for (old_unit, new_unit) in &edits { new_lock = new_lock.replacen(old_unit, new_unit, 1); @@ -420,60 +409,6 @@ fn is_newer_2x(v: &str) -> bool { .is_some_and(|minor| minor > 1) } -/// Rewrite the target `[[package]]` unit to the file-source shape proven by -/// the fixture pairs: `files = [...]` becomes the single -/// `{file = "", hash = "sha256:"}` element and a -/// `[package.source] type = "file"` table is appended as the LAST subtable -/// (poetry's own placement on both majors — spike P1). Every other line — -/// version, python-versions, groups (2.1) / no groups (2.0), description, -/// existing subtables — is preserved verbatim. Returns `(old_unit, new_unit)` -/// for the wiring record. -fn rewrite_target_package_unit( - lock_text: &str, - canon: &str, - rel_wheel: &str, - wheel_file_name: &str, - wheel_sha256_hex: &str, -) -> Result<(String, String), (&'static str, String)> { - let span = - find_unit_span(lock_text, |lines| unit_has_canon_name(lines, canon)).ok_or_else(|| { - ( - "pypi_poetry_lock_package_missing", - format!("{LOCK_FILE} has no [[package]] entry for {canon}"), - ) - })?; - let unit = package_unit_lines(&lock_text[span]); - let old_unit = unit.join("\n"); - // Defensive backstop: CRLF locks are routed to the line-ending-preserving - // `poetry_lock` rewriter before this point, so a fragment that cannot - // byte-match the file here is an unexpected shape. The caller's replacen - // splice would silently no-op while still recording a rewrite, so fail - // closed instead. - if !lock_text.contains(&old_unit) { - return Err(( - "pypi_poetry_lock_parse_failed", - format!( - "the {canon} [[package]] entry cannot be spliced back into {LOCK_FILE} \ - (non-LF line endings?); normalize the lock to LF and retry" - ), - )); - } - let mut out = - replace_files_array(&unit, wheel_file_name, wheel_sha256_hex).ok_or_else(|| { - // 2.x locks always carry files[]; a unit without one is a shape we - // have no fixture for — fail closed rather than guess a placement. - ( - "pypi_poetry_lock_parse_failed", - format!("the {canon} [[package]] entry has no files array to rewrite"), - ) - })?; - out.push(String::new()); - out.push("[package.source]".to_string()); - out.push("type = \"file\"".to_string()); - out.push(format!("url = \"{rel_wheel}\"")); - Ok((old_unit, out.join("\n"))) -} - #[cfg(test)] mod tests { use super::*; @@ -1289,70 +1224,95 @@ content-hash = "4b42a89b7ff7b26511b06acdc458dbd85312e5083db8f212b017482bc68cdd01 assert_eq!(read_lock(tmp.path()).await, crlf); } - /// Valid TOML poetry itself never emits — `name="six"` with no spaces - /// around the `=` — parses fine, so the parsed-TOML guards pass Fresh, - /// but the text surgery's literal `name = ` line matcher cannot find the - /// unit: wire must fail closed (refuse before any write) rather than - /// splice a wrong span. + /// The forward rewrite is the shared `utils::poetry_lock` engine for + /// every line ending: each 2.x fixture wired as LF and as CRLF gives the + /// same lock once CRLF is normalized, and that lock is the fixture + /// Poetry itself wrote (one file per line in `files`). #[tokio::test] - async fn wire_fails_closed_when_text_surgery_cannot_find_the_parsed_unit() { - let lock = LOCK21_DIRECT_REGISTRY.replace("name = \"six\"", "name=\"six\""); - let tmp = write_project(&lock, PYPROJECT_DIRECT).await; - let p = load_poetry_project(tmp.path()).await.unwrap(); - assert_eq!( - check_target_guards(&p, "six", "1.16.0", UUID).unwrap(), - PoetryTarget::Fresh, - "the parsed guards see the unit" - ); + async fn lf_and_crlf_locks_wire_to_the_same_fixture() { + for (registry, vendored, pyproject) in [ + ( + LOCK21_DIRECT_REGISTRY, + LOCK21_DIRECT_VENDORED, + PYPROJECT_DIRECT, + ), + ( + LOCK21_TRANSITIVE_REGISTRY, + LOCK21_TRANSITIVE_VENDORED, + PYPROJECT_TRANSITIVE, + ), + ( + LOCK20_DIRECT_REGISTRY, + LOCK20_DIRECT_VENDORED, + PYPROJECT_DIRECT, + ), + ( + LOCK20_TRANSITIVE_REGISTRY, + LOCK20_TRANSITIVE_VENDORED, + PYPROJECT_TRANSITIVE, + ), + ] { + let mut wired = Vec::new(); + for crlf in [false, true] { + let lock = if crlf { + registry.replace('\n', "\r\n") + } else { + registry.to_string() + }; + let tmp = write_project(&lock, pyproject).await; + let project = load_poetry_project(tmp.path()).await.unwrap(); + wire_default(&project, tmp.path()).await; + wired.push(read_lock(tmp.path()).await.replace("\r\n", "\n")); + } + assert_eq!(wired[0], wired[1], "LF and CRLF wire one shape"); + assert_eq!(wired[0], vendored, "the wired lock is Poetry's own"); + } + } - let err = wire_poetry( - &p, - tmp.path(), - "six", - "1.16.0", - REL_WHEEL, - WHEEL_NAME, - WHEEL_SHA, - UUID, - ) - .await - .unwrap_err(); - assert_eq!(err.0, "pypi_poetry_lock_package_missing"); - assert_eq!(read_lock(tmp.path()).await, lock, "refusal writes nothing"); + /// Valid TOML poetry itself never emits — `name="six"` with no spaces + /// around the `=` — names the same package to the parsed engine, so it + /// wires (whatever the line endings) and reverts byte-exact. + #[tokio::test] + async fn wire_accepts_a_unit_spelled_without_spaces() { + for crlf in [false, true] { + let lock = LOCK21_DIRECT_REGISTRY.replace("name = \"six\"", "name=\"six\""); + let lock = if crlf { + lock.replace('\n', "\r\n") + } else { + lock + }; + let tmp = write_project(&lock, PYPROJECT_DIRECT).await; + let p = load_poetry_project(tmp.path()).await.unwrap(); + let (wiring, meta) = wire_default(&p, tmp.path()).await; + let rewritten = read_lock(tmp.path()).await; + assert!(rewritten.contains(REL_WHEEL), "{rewritten}"); + let outcome = revert_poetry(&entry_for(wiring, meta), tmp.path(), false).await; + assert!(outcome.success, "{outcome:?}"); + assert_eq!(read_lock(tmp.path()).await, lock, "revert is byte-exact"); + } } - /// A target unit with no top-level `files = [` array (a hand-minimized - /// or degenerate lock — the guards never inspect files[], so wire is the - /// first to notice) must fail closed rather than guess a placement for - /// the rewritten array. + /// A target unit with no top-level `files` array (a hand-minimized or + /// degenerate lock) gets the patched wheel's one-entry array, as hosted + /// mode writes it, and reverts byte-exact. #[tokio::test] - async fn wire_fails_closed_on_unit_without_files_array() { + async fn wire_adds_files_to_a_unit_without_one() { let lock = "[[package]]\nname = \"six\"\nversion = \"1.16.0\"\noptional = false\n\ python-versions = \"*\"\ngroups = [\"main\"]\n\n[metadata]\n\ lock-version = \"2.1\"\npython-versions = \">=3.9\"\ncontent-hash = \"x\"\n"; let tmp = write_project(lock, PYPROJECT_DIRECT).await; let p = load_poetry_project(tmp.path()).await.unwrap(); - assert_eq!( - check_target_guards(&p, "six", "1.16.0", UUID).unwrap(), - PoetryTarget::Fresh, - "guards do not inspect files[]" + let (wiring, meta) = wire_default(&p, tmp.path()).await; + let rewritten = read_lock(tmp.path()).await; + assert!( + rewritten.contains(&format!( + "files = [\n {{file = \"{WHEEL_NAME}\", hash = \"sha256:{WHEEL_SHA}\"}},\n]\n" + )), + "{rewritten}" ); - - let err = wire_poetry( - &p, - tmp.path(), - "six", - "1.16.0", - REL_WHEEL, - WHEEL_NAME, - WHEEL_SHA, - UUID, - ) - .await - .unwrap_err(); - assert_eq!(err.0, "pypi_poetry_lock_parse_failed"); - assert!(err.1.contains("no files array"), "{}", err.1); - assert_eq!(read_lock(tmp.path()).await, lock, "refusal writes nothing"); + let outcome = revert_poetry(&entry_for(wiring, meta), tmp.path(), false).await; + assert!(outcome.success, "{outcome:?}"); + assert_eq!(read_lock(tmp.path()).await, lock, "revert is byte-exact"); } #[tokio::test] diff --git a/crates/socket-patch-core/src/vendor/toml_surgery.rs b/crates/socket-patch-core/src/vendor/toml_surgery.rs index 4d151f613..c9f1af5ff 100644 --- a/crates/socket-patch-core/src/vendor/toml_surgery.rs +++ b/crates/socket-patch-core/src/vendor/toml_surgery.rs @@ -1,6 +1,6 @@ //! Pure text-surgery helpers for lockfile-shaped TOML. //! -//! The pypi/uv and poetry backends edit locks by TARGETED text +//! The pypi/uv backend edits locks by TARGETED text //! surgery rather than a TOML re-serialize: the spike //! proved a surgical edit reproduces the lock generator's own serializer //! output byte-identically, which keeps `--check`-style validations green @@ -54,73 +54,6 @@ where None } -/// The unit's lines with any trailing foreign top-level section cut off. -/// [`find_unit_span`] ends a unit at the NEXT `[[package]]` or EOF, but a -/// trailing section (poetry's `[metadata]`) would otherwise be swallowed — -/// truncate at the first top-level header that is not a `[package.*]` -/// sub-table, dropping the blank separator. -pub(super) fn package_unit_lines(unit_text: &str) -> Vec<&str> { - let mut unit: Vec<&str> = unit_text.lines().collect(); - if let Some(stop) = unit - .iter() - .enumerate() - .skip(1) - .find_map(|(i, l)| (l.starts_with('[') && !l.starts_with("[package.")).then_some(i)) - { - unit.truncate(stop); - while unit.last().is_some_and(|l| l.trim().is_empty()) { - unit.pop(); - } - } - unit -} - -/// Rewrite the unit's `files = [...]` array (single- or multi-line) to the -/// single patched-wheel `{file, hash}` element, preserving every other line -/// verbatim — the splice shape of the poetry lock. `None` when the unit has -/// no files array (the caller fails closed rather than guess a placement). -pub(super) fn replace_files_array( - unit: &[&str], - wheel_file_name: &str, - wheel_sha256_hex: &str, -) -> Option> { - let files_lines = [ - "files = [".to_string(), - format!(" {{file = \"{wheel_file_name}\", hash = \"sha256:{wheel_sha256_hex}\"}},"), - "]".to_string(), - ]; - - let mut out: Vec = Vec::new(); - let mut files_done = false; - let mut i = 0; - while i < unit.len() { - let line = unit[i]; - // The files array is a top-level unit key, always ahead of any - // `[package.*]` sub-table — a sub-table entry that happens to be - // keyed `files` (a dependency or extra literally named "files") - // must pass through verbatim, not be rewritten as a wheel array. - if line.starts_with("[package.") { - out.extend(unit[i..].iter().map(|l| (*l).to_string())); - break; - } - if line.starts_with("files = [") { - out.extend(files_lines.iter().cloned()); - files_done = true; - if !line.trim_end().ends_with(']') { - // skip the original multi-line array body + closing bracket - while i + 1 < unit.len() && unit[i + 1].trim() != "]" { - i += 1; - } - i += 1; - } - } else { - out.push(line.to_string()); - } - i += 1; - } - files_done.then_some(out) -} - /// Exclusive end index of the `[` array opened at `open_idx` (quote-aware; /// TOML basic strings with backslash escapes). pub(super) fn balanced_span(text: &str, open_idx: usize) -> Option { @@ -337,82 +270,6 @@ mod tests { assert!(find_unit_span(LOCK, |lines| lines.contains(&"name = \"absent\"")).is_none()); } - #[test] - fn package_unit_lines_truncates_trailing_foreign_section() { - // A [package.*] sub-table stays; a trailing [metadata] (plus its - // blank separator) is cut. - let unit = "[[package]]\nname = \"six\"\n\n[package.source]\ntype = \"file\"\n\n[metadata]\nlock-version = \"2.1\""; - assert_eq!( - package_unit_lines(unit), - vec![ - "[[package]]", - "name = \"six\"", - "", - "[package.source]", - "type = \"file\"" - ] - ); - // No foreign section → untouched. - assert_eq!( - package_unit_lines("[[package]]\nname = \"six\""), - vec!["[[package]]", "name = \"six\""] - ); - } - - #[test] - fn replace_files_array_handles_multi_line_inline_and_absent() { - let multi = ["name = \"six\"", "files = [", " {file = \"a\"},", "]"]; - assert_eq!( - replace_files_array(&multi, "w.whl", "beef").unwrap(), - vec![ - "name = \"six\"", - "files = [", - " {file = \"w.whl\", hash = \"sha256:beef\"},", - "]" - ] - ); - let inline = ["files = []", "summary = \"x\""]; - assert_eq!( - replace_files_array(&inline, "w.whl", "beef").unwrap(), - vec![ - "files = [", - " {file = \"w.whl\", hash = \"sha256:beef\"},", - "]", - "summary = \"x\"" - ] - ); - assert!(replace_files_array(&["name = \"six\""], "w.whl", "beef").is_none()); - - // A sub-table entry keyed `files` (a dep/extra literally named - // "files") passes through verbatim — only the top-level array, - // always ahead of any `[package.*]` sub-table, is rewritten. - let subtable = [ - "files = []", - "", - "[package.extras]", - "files = [\"files (>=1.0)\"]", - ]; - assert_eq!( - replace_files_array(&subtable, "w.whl", "beef").unwrap(), - vec![ - "files = [", - " {file = \"w.whl\", hash = \"sha256:beef\"},", - "]", - "", - "[package.extras]", - "files = [\"files (>=1.0)\"]" - ] - ); - // No TOP-LEVEL files array at all → None (fail closed), even when a - // sub-table line is keyed `files`. - assert!(replace_files_array( - &["name = \"six\"", "[package.extras]", "files = [\"x\"]"], - "w.whl", - "beef" - ) - .is_none()); - } - #[test] fn balanced_span_is_quote_aware() { let text = "x = [\"a]b\", [1, 2], \"c\\\"]d\"] tail"; diff --git a/crates/socket-patch-core/tests/equivalence/poetry_lock_reused_parse.golden b/crates/socket-patch-core/tests/equivalence/poetry_lock_reused_parse.golden index 92c6bfa58..cb3a3fedc 100644 --- a/crates/socket-patch-core/tests/equivalence/poetry_lock_reused_parse.golden +++ b/crates/socket-patch-core/tests/equivalence/poetry_lock_reused_parse.golden @@ -232,641 +232,641 @@ 229 611e2ff89c68f95c 2a0d02afedab3a5a 230 f527497a97f701f8 a0c7f8b7a38ce82d 231 c28e784b6f102d85 5eaca3fe56383b1c -232 c1ce402f18781be2 a82074ae17313ffd -233 007611118fe3a64e 9a946702625c5b75 -234 da193ee6f421e697 539c1d2a923979b9 -235 fcb8370f147cd498 a268e85ef673625d -236 c7efb7c7e506bf0b fe7ffa81f4b20de5 -237 d239809c873e7cb1 c8209e224eae3bb0 -238 6a7255ffccc5619e a0c7f8b7a38ce82d -239 3a5597bd79c8cade 9018fb47624482a5 -240 401e4631776091fe 9a946702625c5b75 -241 4a69d5c889a031db 539c1d2a923979b9 -242 d8d466b2b7801b6e a268e85ef673625d -243 0f60b49e3cdce584 f8c7da65b2a18cf2 -244 0b103a5cc1a06696 8d1ce5e7027e75b3 -245 981098098ade4bfa a0c7f8b7a38ce82d -246 c34cd2a51a2eeb37 e4ed78f1c41388d4 -247 c533f1cb93e1ac9e 02efbf1956ed0b70 -248 e94a54d03f8c9b7f 6aa30f8bf000ba00 -249 f7734bf6136b0114 9a946702625c5b75 -250 9831933a8516c708 539c1d2a923979b9 -251 5d4ec9ea82d01e14 a268e85ef673625d -252 c4de19124816bb5f f5dcb94c17255110 -253 68775f1231372347 914b4f0fc4ae8688 -254 d182171b111be3ca a0c7f8b7a38ce82d -255 e5a8321dfd99df64 fa079e0607c31b4f -256 d7c34b9bb5fa01d6 166233a1773bf527 -257 cd4a7305624682b3 5dca32195af10b24 -258 89b994c8134d41e0 fbb2ec7dbc87180e -259 13bfbc9fd10e27c8 9a946702625c5b75 -260 da2be22f4d97c7e8 539c1d2a923979b9 -261 bef183b50b9cc203 a268e85ef673625d -262 c17fc6e0727ce18c 2c4bc20fc2a070ae -263 e21bd9e589c3fa39 a5ed0838183c05c1 -264 f10f7f2ac12abf4f a0c7f8b7a38ce82d -265 6e9013aea83ef4b4 fa079e0607c31b4f -266 3db0d6d6e25138c1 bdfe2f771c7ed78d -267 84fa852d79f239e9 7c87b6efac687050 -268 1678ce870260d889 57e11ce0c957c099 -269 8eb04cd46a76a6ac bee5a4b12b49eeb7 -270 a21615085d41c75f 065b4e9a418185b0 -271 b03330b6c47089cb 9a946702625c5b75 -272 b24a296f6c6cf366 539c1d2a923979b9 -273 587e4251a3adaa08 a268e85ef673625d -274 39b84bd36767d208 36a52490a23076fd -275 1560c86e86b18946 c13409f239ad2827 -276 68d816d0c1ff2f50 a0c7f8b7a38ce82d -277 667fa61a12c3b26f fa079e0607c31b4f -278 1e06368e9dd035c1 ecbb26e83e8f5e59 -279 3157b8a82d7a27f8 2187fd4e7585e54c -280 201f26c3b7aa1b49 71c9006ab9302884 -281 7b2ff370dd99f08a 934b714b48ce9c7b -282 31871fd008112edf 4c18d9e63dc6c9a4 -283 0f308a83a740e82f 9a946702625c5b75 -284 812a45e42f669a77 539c1d2a923979b9 -285 fe6bcd3505e01693 a268e85ef673625d -286 3ef73600e8618ef4 73f09d10c7a90e0e -287 53d21812e7dcbbb5 83387079942df61b -288 b0ae87d3ea1849c7 a0c7f8b7a38ce82d -289 3f3c7ba21cfc91b2 fa079e0607c31b4f -290 5819cd17bc7035b3 f5940413bb5643fb -291 1a0ffb221f921ef3 9a946702625c5b75 -292 e46cf780baf5deb0 539c1d2a923979b9 -293 c8e83855647a9402 a268e85ef673625d -294 c50f51653082c8dd ffa90a689ddf31cc -295 767e2552ddc22e72 9d4cfc1eda196acd -296 add89f369b576be6 a0c7f8b7a38ce82d -297 7ee3b3a90557ae60 5fa91e1d68fcf083 -298 b5839df0792cf58b 9a946702625c5b75 -299 94027948906531b2 539c1d2a923979b9 -300 6ab14b60bffb6cfe a268e85ef673625d -301 aef183ef38546bc7 ca84cfc1aa0cabe0 -302 88b7fff1698f7752 e6cb8f2ff3fa8151 -303 1916983d5f19b39c a0c7f8b7a38ce82d -304 c909fa8d25b8fc57 33522e585a3ded91 -305 ced752ddd9e0a466 4d852408fe833d49 -306 1cea8a0f38adb01c b5d9b1be9c5235fa -307 b97f885b75e872d1 9a946702625c5b75 -308 b5ec2d81684179b4 539c1d2a923979b9 -309 01ac357711aa8bca a268e85ef673625d -310 efa7b85b999acb6e bca8ad032db77d11 -311 cc65572737675507 e20ecb7d0b851260 -312 1c1a68fb55ad050c a0c7f8b7a38ce82d -313 97f9df5d2c01caa0 fa079e0607c31b4f -314 08d3905567d9fcfd 8e77e7911d85bf5b -315 b54ca71634a47ceb 46d6ee5d5c577fc7 -316 0907461d01669163 a032b526fce85c8b -317 0010a7478674d7c7 9a946702625c5b75 -318 82659362c339bf82 539c1d2a923979b9 -319 5f26e2eed87b3bea a268e85ef673625d -320 11ad9f1dd7fbe16c 2f82ad412e85093c -321 f97db0a712825ecb 3aee5702615e9818 -322 eb68d2c1994600dd a0c7f8b7a38ce82d -323 f029b1bebd90a56c fa079e0607c31b4f -324 ae081d30599cbdb1 acf8e147102b617f -325 f2afa5ee721619c5 3940a3c4124bf277 -326 8b2af7de7336feee 63b5065950d37377 -327 73f653c4d56764b9 bab175aa052cb8dd -328 0fb73a24ce2eefff a437ec109ba84f07 -329 4d6b2940b14618d7 9a946702625c5b75 -330 badeb4bc1749060e 539c1d2a923979b9 -331 20d0ee4a3bfa8e7f a268e85ef673625d -332 b5921ec66943c82f cb3db0388f0da7c1 -333 6261ea0752832e7a b8d43c85d5c176ed -334 4439437c38714bde a0c7f8b7a38ce82d -335 75c926f9b9d6f752 fa079e0607c31b4f -336 282cd007845db159 199297046cb33467 -337 9b587c5fb5c606d0 66fbb6297d733d57 -338 3a1d219e4aa4eb8a 4710a88dc8c13239 -339 86650296d7efb262 efe467c906731dfb -340 37c4f2095bf4e8a1 824c3c6b85d018f4 -341 b41437fb74a3954a 9a946702625c5b75 -342 5c58ae2321976502 539c1d2a923979b9 -343 25a275e691adab57 a268e85ef673625d -344 e5062a6d749dffdf 278f266e5397d260 -345 8cb8f7e34408f3c6 a8d0c327cb9b757c -346 1b9043dfc29f0c41 a0c7f8b7a38ce82d -347 58edc619775a37b9 fa079e0607c31b4f -348 df5f238e62946b7b 05b61440919a3a80 -349 137d67b693a46d10 9a946702625c5b75 -350 537c4ded7f90291c 539c1d2a923979b9 -351 a027886921e5507a a268e85ef673625d -352 3cd6c717fd0cae64 30bcdc015f13e84e -353 80627371d0a05afe c376bd63b287d15f -354 165290395237362d a0c7f8b7a38ce82d -355 608af3f256e4e964 4e881033f7f4b97c -356 c26e0fb16c68b46b 9a946702625c5b75 -357 f20c7a32b924273a 539c1d2a923979b9 -358 143c54520f4eb26f a268e85ef673625d -359 10fc8bb4f8894bd5 088f0149a0b9931d -360 a9579b8564654f15 382770193a0ccfef -361 45a67546df2ea21f a0c7f8b7a38ce82d -362 4dd9a7b9a479dc32 bd4e2fb6ff95080b -363 43f408387653144e 1a39c8156bb0e42a -364 85e0d89b2d8c7d37 4fd03c68fab03bee -365 ceae1ee16b8ec45b 9a946702625c5b75 -366 61316a1d54bc7de5 539c1d2a923979b9 -367 cc4c77cb9015c840 a268e85ef673625d -368 f5d5cb02f379639f 5d17e19341fdbc63 -369 9b14068157a4f92f f39d6db13288907b -370 28a46096d845026e a0c7f8b7a38ce82d -371 b89bf0643b14993b fa079e0607c31b4f -372 14af5cbd8202c1d6 f5f551f2949244f9 -373 132bc5cc2dbfca36 dbe7e604c355cfdf -374 589e6aa3a3f9c43b 09dbe26927b5ab28 -375 58837e13aa6d7192 9a946702625c5b75 -376 54418794ea39b2c7 539c1d2a923979b9 -377 76d723d9a8192536 a268e85ef673625d -378 4a81e9244c370271 f191c56695b9ae22 -379 96b46e7e53f36028 d7449eb8cdbd7e4a -380 9aaa1bdb45d790a7 a0c7f8b7a38ce82d -381 0960dc410feb8e34 fa079e0607c31b4f -382 680702f92a29b0d7 91c16056ff4cc6fd -383 53ca57a1f4d18451 6203f199bfdab739 -384 54bb74c301909188 fc4e0678ad5c35d0 -385 68e3e1a0e50f5053 8e9d41a71bc22633 -386 b9d2b8f66a2a9e5a 54df7d108a7fe4ce -387 1acf625370f03b1a 9a946702625c5b75 -388 55b6cc5cdd88b2eb 539c1d2a923979b9 -389 ed76cab395bd3fd7 a268e85ef673625d -390 0c8d5e9081885c58 97170325b033756d -391 40b71f1a825987c0 7a62b016fd2efa85 -392 16d8ca3dba642065 a0c7f8b7a38ce82d -393 189bd6e139c8091b fa079e0607c31b4f -394 c3743fd87d67e49a 4d9e775467eea1d0 -395 a9b9da9dd9414ecd 55a6d86c9c5cdd2d -396 0b93f8e986787677 28e194978b8d5bb8 -397 d4b372b4ede4672f f342227b2841cefb -398 66641e3b12009f63 8334fbd8e324c4e9 -399 8994cdcbd92db4bd 9a946702625c5b75 -400 92f43aa7fb4c025e 539c1d2a923979b9 -401 1f4054bf7a2c565c a268e85ef673625d -402 04fcf0b896985bce a961ad6615255ff7 -403 8e7a8173711a50d0 81be6ab46ebf000a -404 d5718b52dc79e4ec a0c7f8b7a38ce82d -405 9efcbdd7d0190a5b fa079e0607c31b4f -406 84aaca46035a146f 5e0bf9076af9e663 -407 344f5f2eccedf798 9a946702625c5b75 -408 a602717a0d806acb 539c1d2a923979b9 -409 188fd2c4e8685e1a a268e85ef673625d -410 d15f3f04f141fa2e 9c1a55294b98338d -411 9cce18c74516b8a6 357c0681dd233085 -412 20ac0cf91919c842 a0c7f8b7a38ce82d -413 9dd8038824cacf85 998e0bf2891431c5 -414 5d72c96ee9ec0302 9a946702625c5b75 -415 07c57c8cdc7764bc 539c1d2a923979b9 -416 7ce2cb89e3a2e0ee a268e85ef673625d -417 60eb0917c2546591 b25492d8f31939c0 -418 ed807cfb949c655f e34a6aa7e5c64b6a -419 2d755b67ac659c6a a0c7f8b7a38ce82d -420 0c79cbc27bdc746c 0f30d19b5c9fc0ad -421 985c86cc4a0b1351 c75a10669400bc5c -422 26536576e8031465 4cd2e5a1fbf40af2 -423 d9440f1fa47c4df8 9a946702625c5b75 -424 80f45489cfecb7bf 539c1d2a923979b9 -425 0711119f323e2986 a268e85ef673625d -426 a31c248aeda39667 779c6e2aad622772 -427 85e7203fde00f03d 83a18362f77801b2 -428 8fcf7dddbbc2f6a2 a0c7f8b7a38ce82d -429 558b1d26d89be615 fa079e0607c31b4f -430 ec688e880e6fdc7a 39a7c39d78aa7e4c -431 0491625f3a26952d 86fb56c929a00448 -432 1cf77352f3b3231b 7fde4ea97d37f1a6 -433 410d9f46d89b19a4 9a946702625c5b75 -434 6d048e41ff743d39 539c1d2a923979b9 -435 573bf3ce8ba174a5 a268e85ef673625d -436 99a8872eb869db1f 7442ec9c5bf4be6e -437 481379c82ea76246 2f32b40485c91420 -438 6113b0f4072f961a a0c7f8b7a38ce82d -439 116d7b5e2f06e648 fa079e0607c31b4f -440 93c9c70976071883 991c40a7f2ea6d36 -441 05757215fa6cb906 a40455c7fbd8f608 -442 76bd614eba0f795b a4cf6500e4db7952 -443 d4623e23ff8120d9 c755da61cfa0c149 -444 91448f2389ae4555 0c9370cc807da859 -445 92a40d1e35c15a0c 9a946702625c5b75 -446 45f6191e7fe76280 539c1d2a923979b9 -447 079e8e054580c0c4 a268e85ef673625d -448 7e56722d052d2232 fb2cb89558738336 -449 ca95ca525add07bd 5de7cece8fb4f9e8 -450 96ac2f585069ee14 a0c7f8b7a38ce82d -451 fb0e3ced2cd6f641 fa079e0607c31b4f -452 3d668f0fc27b5487 eaee51dd9c46b4e2 -453 f38aed4c82d8cf43 cbe27f2a1d692974 -454 0a11eee54f189b41 9c09ab51c9295dfd -455 7706538e22ed171f d86902442d3576f0 -456 b63d44cd79f4e6b9 58e7bdd315d5f855 -457 e08eb02752fa5c7e 9a946702625c5b75 -458 468f89317a6abec2 539c1d2a923979b9 -459 a7df00e75c7b1d83 a268e85ef673625d -460 7dcc3d0c9c68ad4e 968ebfcb1bf1f9ef -461 7437b5cd9aaf5584 5e63aad87e410d09 -462 9429061c15ad90fe a0c7f8b7a38ce82d -463 cb972c062d38e80b fa079e0607c31b4f -464 4b294a6489c0497d 215e551dc3815acf -465 fc5b5306ede35de5 9a946702625c5b75 -466 71d599ba796386f5 539c1d2a923979b9 -467 3b294bf984262b85 a268e85ef673625d -468 92216508b0b0e623 993ffead8da75d21 -469 4d56262e277aba84 0f37791c27aa2bbe -470 209eb3d9570167a8 a0c7f8b7a38ce82d -471 6b5e3ef33328b409 6c76f9bc1edb03ae -472 63dd9f334465f84b 9a946702625c5b75 -473 a8c66b07ddf17d98 539c1d2a923979b9 -474 fd82bf829cd003a5 a268e85ef673625d -475 902a254f7188e316 8ea7b5c2d080b941 -476 151b19de809af4c1 7c78018a7813e2fd -477 3c18e89e56b26095 a0c7f8b7a38ce82d -478 1a57237da9bab0b1 b24109b9abe172c9 -479 4c66505e3aea3e57 9d8f596a072f93aa -480 2d4ec5a541abb340 2db56585ca4e27cf -481 f1940404bc989dbd 9a946702625c5b75 -482 ac656ebbd6e733dd 539c1d2a923979b9 -483 47db17a38f12c8b1 a268e85ef673625d -484 e9e00de5cc1cf464 b8b46ca85486610c -485 4a0cc95f6bea24d2 fefb4a92baf8fa21 -486 82f9809b55071475 a0c7f8b7a38ce82d -487 416b3ffc0b6bc614 fa079e0607c31b4f -488 982cb4ce1abaf836 0c165cb0bba061bf -489 27e435498f74056f f90d0edfccea87b0 -490 eab9a128c3a851c5 a718906f0899fcf7 -491 023e04474bee50b5 9a946702625c5b75 -492 9c670ee6630bce06 539c1d2a923979b9 -493 30242f55b29e389a a268e85ef673625d -494 5af3aa8b3936cb17 176f3f13b7282c4f -495 48a17ce7c8402e16 8e63cab086e9ed00 -496 9bd45523da93efa5 a0c7f8b7a38ce82d -497 238daa228f7034b8 fa079e0607c31b4f -498 f7426475a8fbf536 89c71d1075640a85 -499 d59f0a839a17f66e 97cd51411a269e3d -500 11d23c4e453f9334 2ec09967e13baa74 -501 740204dad9986596 53af38f44b449285 -502 e690ea9ac0a03177 366622628af3d69e -503 a5653f77a2ff29f0 9a946702625c5b75 -504 1f63ea8b0a6367b0 539c1d2a923979b9 -505 89e1b2539f2f6e3c a268e85ef673625d -506 148d273c65126d33 ec22370901732721 -507 9cf82f2ef603dad1 604b3c665866ae8b -508 e37d16164e51c99b a0c7f8b7a38ce82d -509 58d30fb4f67afbc4 fa079e0607c31b4f -510 4dc11e7c90bc09ae 9dd74e4e2a848eb2 -511 e1f5173eafa1333e 80687ac188957ee6 -512 7cd14b52a0765ebe 8902206f97d1825b -513 d5e20e4bf10333a0 b8d21a2568f3b9b8 -514 957b8a6610746efa 9cd19872b05165c6 -515 af7863bb77291f4c 9a946702625c5b75 -516 4faf330465de9a56 539c1d2a923979b9 -517 7fd5a46ef61d764a a268e85ef673625d -518 64119cecffd70ffe f849e65ec76e1a84 -519 b3a787892144f65d 9cc6a994839c45e4 -520 7df01ad13b16f63a a0c7f8b7a38ce82d -521 a900694ff4711879 fa079e0607c31b4f -522 3500978961304460 e4bd1f923794b147 -523 0d820a609af80901 9a946702625c5b75 -524 c430378109cad27a 539c1d2a923979b9 -525 176599d913af697a a268e85ef673625d -526 0b3cf9e19c30b97f 58f2334f8ca9cb80 -527 78fe1d11e94692b2 f1aa6d8047c8323c -528 a22705517e6515b6 a0c7f8b7a38ce82d -529 6e19463c6c23ac36 43acaa1e14b30969 -530 8856fde1d1f0b090 9a946702625c5b75 -531 e3f43ace66aa1b41 539c1d2a923979b9 -532 a255b57321113cee a268e85ef673625d -533 652b5ec6051051a9 5e8e7d4a79f70a69 -534 0dd05a89f94d5b53 a56f43445cc42f9c -535 618665f5e8a2ca97 a0c7f8b7a38ce82d -536 d9a3d7ebbdb8a7c0 841bd4b3c07b2e06 -537 fe0748a7a23c9888 167cb9df676ccc19 -538 69817be0896ec6f5 f7a743f7ed13a7ee -539 9ed6989c768a8c41 9a946702625c5b75 -540 f2cdb95a3c881ac1 539c1d2a923979b9 -541 0cb1d968b3e70e4f a268e85ef673625d -542 f3ae1399011e2486 008a6d58a73856df -543 f7b398672cf4eea0 089bb4b0dd4f9855 -544 c4e022380dc98cfc a0c7f8b7a38ce82d -545 f3aa52ab5dffe244 fa079e0607c31b4f -546 262875fd15dd282e 7b24b4735525c64e -547 7ea1e4806770d0bc 32aff86a02175f86 -548 018ffd0302af6a01 fce7fb229c97bf65 -549 e7ea31ae00081a75 9a946702625c5b75 -550 159d0a6f432acef6 539c1d2a923979b9 -551 e651b92483ada564 a268e85ef673625d -552 dbfdc2a2f5880f4d 3a2e06aaf38036c9 -553 720da9c8af732736 f4353e308d272cd0 -554 6d748581042396dc a0c7f8b7a38ce82d -555 47bc4e38555b8784 fa079e0607c31b4f -556 b6187980a2a10e22 714d2a4829ac0c08 -557 0a0392e54aa5b925 4ff7ede1f6e83a5f -558 d95c53b1a69d8a11 22fad75e10e92a93 -559 86fcd29f82627e38 20531bef9d408c42 -560 e8251a4c7a382bb5 129b9f3c21748863 -561 33d1e4b38e7336e0 9a946702625c5b75 -562 b69415f4ed0e83d5 539c1d2a923979b9 -563 723c167bd4d560dd a268e85ef673625d -564 b5757b25c5bc48da d24e5e76d6b0c226 -565 ad4cd1c5e9ac52c5 c7cf6407bfcbd282 -566 841a38ad89029f17 a0c7f8b7a38ce82d -567 2e3c568ab1209181 fa079e0607c31b4f -568 e20d6f0121da6128 caa5bbe6c70fc7c7 -569 5d636343ed2e49ca 30080b5e818b5dde -570 2813a364fc20ef6c 29877725f49926b9 -571 4ee0a4860ebbf64b df474ed8f4b878c1 -572 20dd84047c39de0c 9907fec486b664c8 -573 36c678306258f625 9a946702625c5b75 -574 abdc37eea2adf591 539c1d2a923979b9 -575 d245de32c151b25b a268e85ef673625d -576 89d51a950211cac7 cac9aae7a77c49da -577 3733edbc1dad4c19 4c7927a7fae749a6 -578 528391d6268f45c3 a0c7f8b7a38ce82d -579 b48b7ce77c13e0e9 fa079e0607c31b4f -580 fe6c7c9a26a664a8 e3e9c0d57941e614 -581 aec66a7bb1d6f536 9a946702625c5b75 -582 787302c55ec4a544 539c1d2a923979b9 -583 5b92d9b9a20888d1 a268e85ef673625d -584 8a68a7728c4e609c e71201dbb772ce76 -585 932c693067900a37 585ade00061b49b4 -586 b9d5041400ac1605 a0c7f8b7a38ce82d -587 e71879589c6b720f 4fa94170ea5cc6cb -588 56dfd9521aa9baf5 9a946702625c5b75 -589 5379195f55abf490 539c1d2a923979b9 -590 3bc3a18eb47730d0 a268e85ef673625d -591 5d6c7f35f53c3338 ed357497a73ae9b6 -592 23a2357e045f51b7 59793ef3961fd807 -593 53698f82c0158a50 a0c7f8b7a38ce82d -594 f7ef7ebefd99d9a4 80d1209a5ee41d59 -595 b1c3255e9696d0cb 6b82671bd3a7c28a -596 a6bbc943b01cba35 6ca80fb3ede40791 -597 e514b6dcff24d47a 9a946702625c5b75 -598 16c551c3214efa47 539c1d2a923979b9 -599 b0b034dd85e6cd45 a268e85ef673625d -600 4665f9f6cdfbb36c ed9bb3898f762aa0 -601 772c32078dcc6c1b 5e3e450bad946e74 -602 85e596d5e81e4afa a0c7f8b7a38ce82d -603 1551f821e74abc93 fa079e0607c31b4f -604 2c875b20820b31d5 79ed48a792650b87 -605 c3c315772d321829 fca522c110f1277d -606 812dde640d810666 123bc50c9dca9e5a -607 d5e1960efd035a8a 9a946702625c5b75 -608 a34d84bdc20b6b7f 539c1d2a923979b9 -609 495269c10b9c95f1 a268e85ef673625d -610 c08c609d0b99283e ba11c2d58234a0ca -611 045d22bc44097421 eddee045502dfcd9 -612 f0e88f56b3a3ff52 a0c7f8b7a38ce82d -613 5adb93ba90df91fa fa079e0607c31b4f -614 1ad9b87259968700 bd5764b6af2b45cf -615 1ebb1ad39f817d88 e7760c144ce87ff4 -616 3e66129926186a5b 8f356aa025326520 -617 7d1dc399888dcc98 e4ccf58e889d7c7a -618 5acce0378add68fe db07dae6b495f0c4 -619 09b9fccda855b442 9a946702625c5b75 -620 9dc95c3e001357a7 539c1d2a923979b9 -621 650d73ba7de27907 a268e85ef673625d -622 0087e72643748351 60d3fefff2b481c0 -623 620d85ed97d8ee71 4e0f93cee487c212 -624 7692afbf8e48e4f3 a0c7f8b7a38ce82d -625 e3323a0a5318b5e4 fa079e0607c31b4f -626 9d7f635b9a5798b7 1f514fa6595f6cd8 -627 c33cd7d0fc5263b9 e569e2b55c9eb579 -628 a6bb3a6bb53a171b dddeff1d80e4171f -629 0e82a19e295a02c8 b0ac09b41a5a60c1 -630 756d46c4979301fc d6e7769eb188485f -631 6ffbbf3054720afc 9a946702625c5b75 -632 d6511adc238f85c2 539c1d2a923979b9 -633 294b9a982f45ad78 a268e85ef673625d -634 e0c9ffc6b17fc666 99e39c036704d046 -635 a52d50ddbd14cc0b fe97d4123d4058be -636 10d6c7e40c5bb9c3 a0c7f8b7a38ce82d -637 95835506c034071f fa079e0607c31b4f -638 9e388546896bbaaf e1521dab24311489 -639 dec3a5b9cf8016c0 9a946702625c5b75 -640 4f555f7a31338b19 539c1d2a923979b9 -641 9ab86b618d1719d8 a268e85ef673625d -642 0f5773351acdd6d2 52b8904dad59094d -643 f033f3d818481203 c63c3604da5e279f -644 3e8203da4c810e1b a0c7f8b7a38ce82d -645 bb0b07fffdd7ede6 4b207596c1dbacc1 -646 5b3e4905c6c6eede 9a946702625c5b75 -647 c59c0017140f4c6c 539c1d2a923979b9 -648 e395c1678c830cca a268e85ef673625d -649 e1a4854622c58eb5 7ab72b2f80ce61a2 -650 9577d41f9b61fbb7 4ced23d2d3d93638 -651 17d34576c8d4f0cc a0c7f8b7a38ce82d -652 e962d90665f4a973 9ee0091aa73b4ddb -653 c34853c60583d1f2 d3ee67f51ae74788 -654 2f520b1690ca56a5 32e600ebb7a2827a -655 8df240f338b20031 9a946702625c5b75 -656 8da1c4bd473363c4 539c1d2a923979b9 -657 c6bf4afb98686b82 a268e85ef673625d -658 8b73dd9833b0ec8e 6c157e62f840ff53 -659 2f9c186072f74a51 60956bd18bbaf256 -660 692f7da11426bc1f a0c7f8b7a38ce82d -661 c0b485e3cccfdd82 fa079e0607c31b4f -662 b7bd0e2b69c645da 1acbdd73063364e6 -663 cac6f5d8649db6b1 bbb1db49eced6d0a -664 f4e2c14bb9c3c310 f23ed7f2ec8b4615 -665 0913460c7775edf4 9a946702625c5b75 -666 486b348ad26e736e 539c1d2a923979b9 -667 eefe3bac6f42dcd8 a268e85ef673625d -668 4348268429967e5f 1954d002a278191d -669 cdebe00feea92200 b70a2e4c15c49fb9 -670 674b2500841b93e6 a0c7f8b7a38ce82d -671 c0be6b660f34ae07 fa079e0607c31b4f -672 1a513bf929524ea1 6ace7b4946677f93 -673 e86732b87c457da6 5e4c1e06ce2c3330 -674 2c57da4a6de1a886 d9e3f3962429e75f -675 db1487806323ba48 1cbb5e205e0d4b54 -676 03fee9758575e009 67dd5e713a3d3ab8 -677 afaf6ba3d330e0bd 9a946702625c5b75 -678 4b9eb586c92f5ff1 539c1d2a923979b9 -679 dd1bcd3e595ae8a4 a268e85ef673625d -680 83d6d63e6151a524 fbcebfc24a583175 -681 fb6a159ff32a8c80 81a6bc2a91c2870e -682 19d80a5a7385c273 a0c7f8b7a38ce82d -683 6b2a63af737c087d fa079e0607c31b4f -684 f7595f547b77eaaa 9fb838196b19881e -685 d518355c1a832505 01fc20e67c8f8fc9 -686 69103bcd82facea1 90face6131717a4f -687 eff63a4021952de5 b485550573b6fb61 -688 93c5c4102ed23a28 6c133795dd88a588 -689 5eb1f6d4f8895bf5 9a946702625c5b75 -690 5e676a635a44a8ac 539c1d2a923979b9 -691 c91bbdeeb6bc21da a268e85ef673625d -692 93ca4f6f9593debf 1182057cdde2dd06 -693 70c983163ea79e05 fad7fdadbe6be120 -694 06d12e08968eb0a9 a0c7f8b7a38ce82d -695 0804dceaa131e9e8 fa079e0607c31b4f -696 72e2b31ef002f93d d11a758692cf05f8 -697 2f91d9474f17acdb 9a946702625c5b75 -698 ce6b43ed0c72194c 539c1d2a923979b9 -699 6c8f6ed88448a3d3 a268e85ef673625d -700 f36069572f4c663e 03a77b44711d87e1 -701 f2b8a5d78661b51c 885365553b4cf3ae -702 1d12ce2033db5680 a0c7f8b7a38ce82d -703 953b6afe9ba1303b fcce80503ea070ad -704 7720568f3237c2e5 9a946702625c5b75 -705 00303fcfa7aad1f6 539c1d2a923979b9 -706 b71fee3ab753eec7 a268e85ef673625d -707 ef79d8cd55b54906 208c0fbb8a39a2ee -708 111de55deb3b8f68 5f76570ca028a4d1 -709 61f062be7c41d9d8 a0c7f8b7a38ce82d -710 1374f9adf1974004 cb20e850527b4f87 -711 55495a35887e46ee 6380cab448a3f704 -712 ed7a321c76d8547e 9a20a2935ac6a3ac -713 cb1d0a1f2e036c53 9a946702625c5b75 -714 0c1267270f72aaa8 539c1d2a923979b9 -715 aaea403f4dce7309 a268e85ef673625d -716 f05ed668f302204c 76c170b955fe47f7 -717 a6abc1bb75ef8847 0d6c2138caa1ac7b -718 eca6689a6eb21d0d a0c7f8b7a38ce82d -719 6c9b91fae3902329 fa079e0607c31b4f -720 cd357ef026ab4f7e 1cd3fea3c9d32499 -721 b692c182e67c1b44 07fbb0c61d02a96e -722 97d5a67976e8b4ea 7ea414e26ecc3fd3 -723 da1c9dd6c8a51515 9a946702625c5b75 -724 f008d5ea7d28fb67 539c1d2a923979b9 -725 ed6cbba1014436e6 a268e85ef673625d -726 b56ab639fa5cea66 946dec2cda8972b2 -727 26093ee74fb843ed e7394d5674c04893 -728 e5213be1f282ed25 a0c7f8b7a38ce82d -729 caa6b57cd4c3ed2f fa079e0607c31b4f -730 c21404891d7dbe0d a48818f8c6fb10b1 -731 7633bf29ee8cda5d 517d18fbc6c5996f -732 26ae98512d6a8562 fcea13972a7bbcb2 -733 682eb4212e9aed30 dc770a29a3d15e36 -734 aa86228d27bd6945 f983c22f4b629573 -735 0e4d2aef7a19eb88 9a946702625c5b75 -736 c0c7567259b0cb0a 539c1d2a923979b9 -737 c1f56a784fa2d728 a268e85ef673625d -738 e08fc4d0ba0cc4dd 11a4ae86948669da -739 980c6d182b9071af b001360a59397a09 -740 68cadf348e0e2c3b a0c7f8b7a38ce82d -741 a09e05887498042b fa079e0607c31b4f -742 cc4513f777cec34b e17d0ba3586c72be -743 f4b34e1a926dd827 80e3b06d1c216e5f -744 2a20954451679413 86d2c098b9233abd -745 dace8b8f5642b846 29e67e78e3077753 -746 c0070275f42f3d6c 464cc91f6c08a58b -747 c1225ccf13f2041b 9a946702625c5b75 -748 288ef06903377145 539c1d2a923979b9 -749 f3f05b9def0c5f0e a268e85ef673625d -750 31dfcd70fc37ca75 54383784053856ba -751 ddb42b6b033ab008 d0c0bb2094876513 -752 40041a7f0a436646 a0c7f8b7a38ce82d -753 cbeaa107408270af fa079e0607c31b4f -754 f6cfd1a3d53f692e 60c5cf35167bc2ad -755 8e9d834717eb8da4 9a946702625c5b75 -756 c85b8006cd75874e 539c1d2a923979b9 -757 80c8e44c7bdf573a a268e85ef673625d -758 c1b4aeda950cb92d 0ade615542138e42 -759 e5517b5e86093c31 f1a00ff6252b2e5d -760 14c0863701eda852 a0c7f8b7a38ce82d -761 8be51200b6511a35 d441335e8942716d -762 284759850a866f2e 9a946702625c5b75 -763 f9a91d05145eb883 539c1d2a923979b9 -764 82c48b11f7e589b0 a268e85ef673625d -765 dfdf10a74936725d 49f10baf46415403 -766 7aad1ca52eb8b83f d99d8df33cee5743 -767 657cca3a4f92213c a0c7f8b7a38ce82d -768 de5c6fc8dded15a4 ff8d7e77ff1b54f3 -769 a4fb9be261f3ad2f 68d5429470596f49 -770 018402b71419e018 2b7741a0a3e2a74f -771 b3905753aea57078 9a946702625c5b75 -772 2d33b2e49c1006ce 539c1d2a923979b9 -773 e74774d0c7e8d3f1 a268e85ef673625d -774 f23314326d1670e0 6fa9761719a4e5ef -775 3a9bd5dc832b1ec2 2cc46f976788f8bf -776 2e7c38990b912015 a0c7f8b7a38ce82d -777 27a5161b41e98573 fa079e0607c31b4f -778 395c003790d4ffc3 1341f97b335a715b -779 97e0dde0ac748fe2 bdafb3636d9d046d -780 70b1c741155f3eac 9623037e5434fcaf -781 b66f5f24454a0fcb 9a946702625c5b75 -782 6c307702d961caa3 539c1d2a923979b9 -783 5259d78dc7dd4029 a268e85ef673625d -784 8f1d7ff65742f093 58f569834a746374 -785 4b4a9a534e44a2e8 6c5e8657d027b0d1 -786 d05a1e28065ce669 a0c7f8b7a38ce82d -787 f2b8bef539161d2c fa079e0607c31b4f -788 959ecd7ca52bc5e5 003ed13368451f27 -789 644d45670a7ed060 a44d437b32d98cc1 -790 fb402af7354ee68e 2bf8b2f8898bdc7e -791 377c5c3252e4f272 e38f98d27b9d9263 -792 af1f4ac42898f244 ac0e2ccd28dbb4ad -793 660bd1f258f9d5b8 9a946702625c5b75 -794 4a4900a9dbde81e5 539c1d2a923979b9 -795 7dc571c8a26f94a6 a268e85ef673625d -796 ae655f1f16fe42ba 580cfa853a8cc0fc -797 3da9fa8606bb5ae6 ebe35a600c4cc45c -798 2ef7e96703c99ec8 a0c7f8b7a38ce82d -799 07256b8e2d86ce0e fa079e0607c31b4f -800 35e4c74162086005 7955b038ad806e79 -801 af5c394a0ba5ec6d fd3d7c3765ae3fb1 -802 43e5f13e064f1fde 3970f2c7b9f2aad8 -803 8294101db7c9fb8a dd2ec7e9845503c2 -804 760ed642b0985c62 ea208e0fcf600b89 -805 2dd33ba8962483ec 9a946702625c5b75 -806 c1903d7161bb87df 539c1d2a923979b9 -807 ba663d7fe1241c04 a268e85ef673625d -808 5199e31f86c42804 3900b34a78245d67 -809 387d26844e85ba60 38929bf1af18b989 -810 de98c9d11d6e887e a0c7f8b7a38ce82d -811 d8cf5579b80cc243 fa079e0607c31b4f -812 5b5a282a2c78fd8e bda8d93e0d7324a0 -813 540b3362e235c2e9 9a946702625c5b75 -814 0b0e2b47b74560c5 539c1d2a923979b9 -815 e9a7f5dff8d2e377 a268e85ef673625d -816 c6dad953413cbbe8 610cfb6a683df922 -817 c159dbbf0776747e f9cc4d261de7c34f -818 9d73898674872ee3 a0c7f8b7a38ce82d -819 ff512acc6e6d19ec 31d212cb02d89f0d -820 fe1955fd8e764f2c 9a946702625c5b75 -821 ce52c324b8945714 539c1d2a923979b9 -822 fb5f64d7f2e3cada a268e85ef673625d -823 1740a219bb94709d 67b307e451d4c455 -824 4ab3170b14032470 b58398529050d69f -825 b2894d43e8ef4d78 a0c7f8b7a38ce82d -826 199e9775cd323618 bb9b0e5946c39e6e -827 739357a7ea6dbc0a f0fc3f50766427f4 -828 9024eaffa691b71c 2eaf6acfc3cabf25 -829 8d18299567927cbb 9a946702625c5b75 -830 e4d6f17c083f6b84 539c1d2a923979b9 -831 4569d66effcb6c83 a268e85ef673625d -832 7739d57fac469b83 9696af78b7c82e66 -833 3dba91423ab77774 a3aa849c36d584e8 -834 ae77b6bc7d333c99 a0c7f8b7a38ce82d -835 7885e6f28915897e fa079e0607c31b4f -836 8a3dc804cc2bf515 94f3eb2d49d1fb8c -837 919d3d9f16f1459e d8d42d7c68cdf1f7 -838 471d72d59f219163 de9742c264a38905 -839 c8223dbb9e9446f7 9a946702625c5b75 -840 c835e19be7ffdd22 539c1d2a923979b9 -841 c1299ace0e314f25 a268e85ef673625d -842 68d2f117669d47a6 35d66b136bd1327d -843 38a0e49225ddbc4f 9e3276e1acdcc526 -844 68457cfc8a9442b9 a0c7f8b7a38ce82d -845 0d4dd665685a1630 fa079e0607c31b4f -846 04cb8fc9c3bdfbb2 7fd8f3b5413b80e0 -847 9f4f3fc485e6a5c7 2597d1037afe1450 -848 c09de20e3638f2f6 b82e067679d4a0ca -849 75735b9163e5c6a7 c50b00c1061f3b38 -850 3b92ccdbbd7943ec 39b8b6a378cce352 -851 f5f1b306cc951a26 9a946702625c5b75 -852 005492aa0e7d6046 539c1d2a923979b9 -853 32024b476c329fab a268e85ef673625d -854 9e1b1cd2ad677f3a 083e66313157d5f6 -855 ebc1f9ea669f7e58 e1c7dfc57ff8c72c -856 3f311d401c8478ce a0c7f8b7a38ce82d -857 304557ae61644f07 fa079e0607c31b4f -858 743993c74a0404c2 13f6d750674f9e5b -859 123f000f3a9485d1 88c7118b4f5f164e -860 ac0f7bdfac5d5a5f 3e9990694c244a92 -861 fa822def9d3d333b 629101ce681b00fe -862 951c348fa5e6be54 065db272dc7adf99 -863 671b280d23ed273a 9a946702625c5b75 -864 74916a24e3537ebf 539c1d2a923979b9 -865 d8b0327197ff7f76 a268e85ef673625d -866 4ae66b1b36d885a9 8be4b3eed027c3c4 -867 dc4bfaf40cdb6393 dfdee3d01e052064 -868 42fff8f51e69abd0 a0c7f8b7a38ce82d -869 770199874b76b133 fa079e0607c31b4f +232 c1ce402f18781be2 4aff7295d5b3fafd +233 2b79b02adb3d7fbf 9a946702625c5b75 +234 2fb13e7a0ba97537 539c1d2a923979b9 +235 2264377710eedf54 a268e85ef673625d +236 27d5c91a6c0067c0 96ad0be1bda3ad79 +237 d99e970fafad4c74 318162f8bd7f53ab +238 58293dab470bab02 a0c7f8b7a38ce82d +239 3a5597bd79c8cade 46ecac2df1b4847e +240 2eec6f331a4c4141 9a946702625c5b75 +241 9ddc09ae8849323c 539c1d2a923979b9 +242 920f0db9ce2c47ce a268e85ef673625d +243 8e96c8af7355e665 edc96e783ea9b9cb +244 9a920943ad288707 8915324597e1ecc4 +245 e27aed126d696e63 a0c7f8b7a38ce82d +246 c34cd2a51a2eeb37 e31b69e39c24c8b3 +247 e808299294b10162 a6f84549768deb7a +248 cefb3bd328332065 3de0fe61412b20fa +249 196b96b1747b2041 9a946702625c5b75 +250 44d9aad801de3b8f 539c1d2a923979b9 +251 55c0f39e47e5483b a268e85ef673625d +252 4a368e5dd8d63e1c 806eda547c9e4952 +253 24dfee4ab0a3f1af fd17d1bcd2f00c15 +254 6ec214391015320b a0c7f8b7a38ce82d +255 3b3ff2d4c64feeee fa079e0607c31b4f +256 d7c34b9bb5fa01d6 675e446587711cd5 +257 081e4f74d1957528 0d05986ace7717e6 +258 063d5161ec306813 21b986626784f73e +259 d3a0099ca8e1a071 9a946702625c5b75 +260 99696a73ffdf294e 539c1d2a923979b9 +261 627b421210074c49 a268e85ef673625d +262 e6c30c483cc67fe3 4e705b98039221d5 +263 a92c56a5ee07ec63 12f48c2d8e1a3afa +264 abd31c21b5c08e9f a0c7f8b7a38ce82d +265 fd4a6e3f9a3fe83a fa079e0607c31b4f +266 3db0d6d6e25138c1 2179c390291c8d4d +267 443ead7960dd4c05 f56da9f3c89cca1e +268 64febfad2685928e 1d1d31d74f915db3 +269 62e751e3600e89ef 562a1689e1e6e492 +270 412c5bd65dc69794 ccf57da1feadc37d +271 42a396584373b3af 9a946702625c5b75 +272 86407f9a90744b19 539c1d2a923979b9 +273 21f78e76666b1c06 a268e85ef673625d +274 bdcc2d19fef104af 243fbc411e98271e +275 986b77f21335217a b43ec3f99766fcbf +276 c89b1e8384bbf58f a0c7f8b7a38ce82d +277 9824560f358b6a37 fa079e0607c31b4f +278 1e06368e9dd035c1 940ad2af69af59c9 +279 75c275c9e5451720 5382b994e12ac69e +280 2b70119886d1b3e6 4f4333c152f192d0 +281 3b1dbcc5a6712813 fb7bb6b91bb6f7c7 +282 cf68b6f0a3a5f689 ad686c3ef18ff999 +283 9da7e016e5ebe801 9a946702625c5b75 +284 5790c99264aeb6c7 539c1d2a923979b9 +285 7baad4ea11912354 a268e85ef673625d +286 15cc96bb46dcb31a 9586c416c02cc953 +287 abb82437d5952709 90990d59119fa0a1 +288 c017bdda3b770dc1 a0c7f8b7a38ce82d +289 aa0e20206fb8cfe7 fa079e0607c31b4f +290 5819cd17bc7035b3 dcd0c68e694104f3 +291 cff075bc9aec90e1 9a946702625c5b75 +292 00097963b3d21cf5 539c1d2a923979b9 +293 aa01ba7bacf4a1c9 a268e85ef673625d +294 3749ef1c28a06741 b9e9cbff4f7f804e +295 379b9891e9d37b88 4e0aac041508d590 +296 5ea0d4bb90645816 a0c7f8b7a38ce82d +297 7ee3b3a90557ae60 3c5eff46736a7f50 +298 39eb42e608db1321 9a946702625c5b75 +299 a9043ce6368e149c 539c1d2a923979b9 +300 d3bfdfca6ca5b3ab a268e85ef673625d +301 575b3e308882ddc2 4a72841edd046c3f +302 8aea6ba78a89ae25 a62326f347c240ed +303 d51c6cc573796f54 a0c7f8b7a38ce82d +304 c909fa8d25b8fc57 f7d8ebbad08025ca +305 192063331995eba6 7a1bd08459adb20b +306 1b08aba0e4a3b940 a56ece44172ed4b3 +307 893f070c4fbe39cc 9a946702625c5b75 +308 a18f74fcfece5f29 539c1d2a923979b9 +309 cb286256b8d6ab77 a268e85ef673625d +310 0a92812763a97fdc 47cbcd049c4fcc40 +311 4cfc8f5b355df48c b935d9ef6c77e9ac +312 cf8d808d924490a8 a0c7f8b7a38ce82d +313 78269d5ca22017c4 fa079e0607c31b4f +314 08d3905567d9fcfd 33e554d92c5bc56d +315 1436f07fbb0bd84b b035e98e9cb877dc +316 102548bb6c629dc4 909bd182d27b3f86 +317 1176bbf4189994cf 9a946702625c5b75 +318 749da619bb45c1ec 539c1d2a923979b9 +319 7a76a41c5cc2d85d a268e85ef673625d +320 4ed3ea0ffe6aa51e 744f8d30711e588f +321 db066e0c2e5d2548 eaa7823780ebfa77 +322 a27d3cb68d1ab073 a0c7f8b7a38ce82d +323 23841758460004a7 fa079e0607c31b4f +324 ae081d30599cbdb1 eb5965f59c0f3ac9 +325 491993f99cd67312 f75ffa7bca2160b0 +326 4b05cecdf69d129d eabe351371c2fdab +327 675420f0e4b105a0 5d19a3f750e94c40 +328 e38e8ebd4b39df8c aa36672af60cae84 +329 20bd30e743220dd4 9a946702625c5b75 +330 b43eb36664f4d10e 539c1d2a923979b9 +331 cf2dd865d31d27ec a268e85ef673625d +332 7c098deece85cd72 e9dddaa68a14fc68 +333 6c622b9a5a622945 4795d13fd3b13663 +334 536586e577eb8ee9 a0c7f8b7a38ce82d +335 e0c4e479dc9b2a8f fa079e0607c31b4f +336 282cd007845db159 40365289efaf8050 +337 524ff7ba64244a66 8a4cbba37cac157f +338 026f610bc36e0200 c66f89c8b4c72828 +339 1021471c01cc1f5b 5daa024e0595eeba +340 36545ef2d46058ba 09b26a73d50b02d2 +341 91cbc8544c09d08a 9a946702625c5b75 +342 c331e198a9522473 539c1d2a923979b9 +343 c1a8f598f9ae3bc8 a268e85ef673625d +344 9434561691a00f16 67a64743424d83c6 +345 8d7a5c86778c530c 050da1ecdabea53e +346 f53dacad26af9843 a0c7f8b7a38ce82d +347 edb805fa7f3dba7a fa079e0607c31b4f +348 df5f238e62946b7b 08b035a74c4b3db0 +349 25d8e779a42ba381 9a946702625c5b75 +350 a7a25be8b6fe6571 539c1d2a923979b9 +351 278a2a08d6ed1f4e a268e85ef673625d +352 f4b144cd2fbbab18 6df0a483f3fad4ba +353 37aac5d82df822d9 a103a63c192b039c +354 5e183abd086789cd a0c7f8b7a38ce82d +355 608af3f256e4e964 4a2de38543a42354 +356 8bb1ed32976c42b3 9a946702625c5b75 +357 65ec3febf8b7a065 539c1d2a923979b9 +358 4b22fd9aa7deed51 a268e85ef673625d +359 982b4872c28e9141 83779ec251c16026 +360 68cfa3fcfb586ee9 373551afc70dcbe6 +361 eda781a5e4bfb8d1 a0c7f8b7a38ce82d +362 4dd9a7b9a479dc32 217b80dd9d747829 +363 2053098fab7e8437 af2412fdf8b05b9c +364 d1a1f67205632fbb c79e162cc99b5a3c +365 c2cf882827d8cea9 9a946702625c5b75 +366 03540a9c9b1d4d24 539c1d2a923979b9 +367 4ec3b32d57c01a15 a268e85ef673625d +368 fcba054dc2ce8023 55620450e4de7a0c +369 7ce0c711e03b9bf1 afddf726c46bde8f +370 85fca8b4785dcbef a0c7f8b7a38ce82d +371 bd2db14d6f05fc9b fa079e0607c31b4f +372 14af5cbd8202c1d6 99bbeec1cb3fecf4 +373 e215d360bd88b997 9527aba998495eb9 +374 42e5b4d73a412078 ebe0be8075cac9b4 +375 37888d8aac7f7bd7 9a946702625c5b75 +376 00658dfa64646fb6 539c1d2a923979b9 +377 128f4d36f4a8f544 a268e85ef673625d +378 9d1af51527387039 3204f1a513e31a17 +379 f12597529e921516 6e03df2d8eb3c2de +380 a3f9706a6f4f56b9 a0c7f8b7a38ce82d +381 860fd3c588f77a8e fa079e0607c31b4f +382 680702f92a29b0d7 8448a32f9973950b +383 99a525367e6297a5 1d5d1ae425f750ca +384 cba4a7662cb06a4a 23798f559e9fc54a +385 69f8b342972ce25e 4311c7c4b83a978a +386 beb88d5360a9a299 cc8968e0b56f4d29 +387 3dc7eae1207642d0 9a946702625c5b75 +388 c5e95f48abd03e88 539c1d2a923979b9 +389 e777680eb34b25ed a268e85ef673625d +390 c55666f0c1748324 dcae88fb23960119 +391 dbea0ba55ba23f5f 29194b284501d629 +392 ff40abfd6fcd2e02 a0c7f8b7a38ce82d +393 aa8d1d0dd48d2b18 fa079e0607c31b4f +394 c3743fd87d67e49a df43e2a534b7ccba +395 2691b5460d775d67 26771906cc513638 +396 7447ea79e5337bd1 ba2220bc0c11cd3d +397 c9122570f5d7cf4f 8e5cf40b60516637 +398 4498ee80c0a14f9d fd966111e96f7799 +399 a42b28d73c91538a 9a946702625c5b75 +400 989669d59cec1bf4 539c1d2a923979b9 +401 4a99edb8af8c7c6d a268e85ef673625d +402 68a75dc56e36d459 3a9b7e30810701a0 +403 acaf8e8e3ddba611 f6757ad958d5626d +404 af72c277aa36628c a0c7f8b7a38ce82d +405 894a2c65f6341e36 fa079e0607c31b4f +406 84aaca46035a146f 02a51d51c82c0397 +407 4b69f8f1c953411e 9a946702625c5b75 +408 6a68189e8c591cd2 539c1d2a923979b9 +409 0ff355e679e3871a a268e85ef673625d +410 eb129c9ef1f13794 aa753eedeb2aed2f +411 2f997d679d9deb56 9ed0acb5afb553b9 +412 af2952464c134244 a0c7f8b7a38ce82d +413 9dd8038824cacf85 d118671f2fe73629 +414 c0b6d1492186606a 9a946702625c5b75 +415 67577b7d8c57dbff 539c1d2a923979b9 +416 3784d080b56cf613 a268e85ef673625d +417 ff23b02c2805f3db 964a182dad18a01e +418 a87be87ca5c3cd3b 43aa844a7c6c3f39 +419 09ca78564cda0cbc a0c7f8b7a38ce82d +420 0c79cbc27bdc746c 02d8b943e168a694 +421 1c5becd9f7b3cada 5a799dc9891f5e9d +422 5dbb586b52574ee4 727bf66da6ba43a8 +423 ec3012387d950edf 9a946702625c5b75 +424 8e58f43b091c107d 539c1d2a923979b9 +425 b575bcec4a06da2b a268e85ef673625d +426 83cf8a81e04c939e 035dc0da1eeec8e9 +427 219509eedda3f48d 75eeef0e8a023745 +428 7d249a98059af8ef a0c7f8b7a38ce82d +429 8eb85303ea977a3a fa079e0607c31b4f +430 ec688e880e6fdc7a 36003985714d54ef +431 23995cbff6f8b137 3869cfff1d7bfa74 +432 2b6cc02f93102e8f a672b2394a5144ad +433 fc1100cf75079ab3 9a946702625c5b75 +434 8ebe23b9966dccaa 539c1d2a923979b9 +435 35f493b65f7c138a a268e85ef673625d +436 5a64d1238c6032c8 4de2aa19ef9ae08e +437 ce7246421ff3e963 355f7febc98ab4ba +438 0202a6a6704a9364 a0c7f8b7a38ce82d +439 5e7a1b88d834c967 fa079e0607c31b4f +440 93c9c70976071883 1d828bf7fe8aede8 +441 f4ef2d0186c953d7 bc0d8fdb38ad4e2a +442 49b5e1ea28fd9fb8 caeabd3a202d41e3 +443 c8a3f98b51acc72e d21cd31c68471ea3 +444 21e16e1ddbb50afc 04c013a62a2a2b92 +445 c9885d9df7fd09a0 9a946702625c5b75 +446 aad2e14bb3ac17ab 539c1d2a923979b9 +447 6487112c7592ecd8 a268e85ef673625d +448 a2f3cb98f6c1d31f 9dd44a805bf6528d +449 b1445ae8b6ca094b a9b40d7ef693b482 +450 2c1df6917c5a9ef1 a0c7f8b7a38ce82d +451 de30219c2e7b801e fa079e0607c31b4f +452 3d668f0fc27b5487 9579dbed12d0f5dd +453 a2d7db7216d4b0f3 3943072ed16c47a7 +454 bcbb0de788d39d58 fee5af715552fc73 +455 d28623284b198aab 602df3110f430257 +456 a14343f69cb500a6 567c28e8d764db27 +457 f55a2d57a6462d44 9a946702625c5b75 +458 376b5c256b539129 539c1d2a923979b9 +459 3266bcf0036f61aa a268e85ef673625d +460 6fd261548550671c 57ecff3756542dd8 +461 9f10ce4ccbe59c89 77adafd6c697e6ce +462 e4f7639de21cf4de a0c7f8b7a38ce82d +463 46065e65d7069992 fa079e0607c31b4f +464 4b294a6489c0497d 169427e08bd076c7 +465 8f14a0fa7c1ebfa8 9a946702625c5b75 +466 05cf0d691a3d9d61 539c1d2a923979b9 +467 522d0291855e71de a268e85ef673625d +468 7a035d9309132210 7dff2ab4d5f5768d +469 700a7d2b94739622 61a014fbcf1988e9 +470 484664beb89ce533 a0c7f8b7a38ce82d +471 6b5e3ef33328b409 aba679e16d542f31 +472 80d8df4917eee7a6 9a946702625c5b75 +473 927446aa143afb8c 539c1d2a923979b9 +474 e19c036cc37a9dfa a268e85ef673625d +475 512d1312dc44d6aa 57292390e14cf753 +476 1bf60b9bf08191fc 8b9a25836321b69f +477 42096aab002c9e10 a0c7f8b7a38ce82d +478 1a57237da9bab0b1 fc9f6c990025e802 +479 6f6892329bf2182e 1b1ba0bf07b0a458 +480 df46f91c2462bf01 b2c382d7fce66a11 +481 abda75fa2c02d7e7 9a946702625c5b75 +482 2dfeb3f06cde8155 539c1d2a923979b9 +483 f71eee9731026800 a268e85ef673625d +484 03587de00138fbc5 f514b2913e827b33 +485 0580cdba53d2fe1e 8787ed08d2251b2c +486 04002b05621b4ce2 a0c7f8b7a38ce82d +487 24b5bb0a81d62b49 fa079e0607c31b4f +488 982cb4ce1abaf836 e0bc84ad9d1e31eb +489 b2a43554d0ba2492 72a797bc7bf6a440 +490 8e39634395d91d93 761c3c076b79f53e +491 37e941237d79c978 9a946702625c5b75 +492 3a249f9d2368208c 539c1d2a923979b9 +493 fa588d5364bc6062 a268e85ef673625d +494 ecc07f4ad24df858 a6decea53d5bc1a6 +495 cd1fafac6c58d8bd 9a7c48e59f00ee71 +496 0fdd4033ae3c4691 a0c7f8b7a38ce82d +497 63eb23e1d69060e5 fa079e0607c31b4f +498 f7426475a8fbf536 b8a502514bb26e31 +499 b126b255244ca0ce 8eb81b904b7fb433 +500 b892c433b0a422ec 4bfd7b821da48b47 +501 ef118652a22ceeb6 110124adbbfa946f +502 8814576f59b6eb2b d062c8c0dceba65e +503 923e843b43badfca 9a946702625c5b75 +504 fdb5d838695a2941 539c1d2a923979b9 +505 f18a75d5996f23cc a268e85ef673625d +506 34740306db0ac04d 6d8c025e4835b310 +507 fff7dc084ed9d327 d7da9c5f34236146 +508 62a3138ab793e6fe a0c7f8b7a38ce82d +509 9aeb389ee3b4de6f fa079e0607c31b4f +510 4dc11e7c90bc09ae 27652f6bfa72dec1 +511 3e80e442b8b835ec 2175abbc1830a808 +512 c9385cedc1f5305f 227b565a90c72f05 +513 856e1932599f026a c158115e9092b2bb +514 119f20f3fd16a5ec e5f47af60f3cdc0a +515 908a19a4755b5c43 9a946702625c5b75 +516 09ab8f2c880e808a 539c1d2a923979b9 +517 e1abd1f5fae7dec2 a268e85ef673625d +518 23a3ed52331dcaeb dd44bda14bee09e4 +519 e6a4af54ee33580e fc273006c08530b8 +520 f03dc559d4e797b0 a0c7f8b7a38ce82d +521 e65b70c267ec055a fa079e0607c31b4f +522 3500978961304460 16f649e4f19325eb +523 d2e038bd91a3c8c3 9a946702625c5b75 +524 55b99a94fb24f593 539c1d2a923979b9 +525 f925f331eba81e12 a268e85ef673625d +526 b464fb25f0c2b7b1 d571072341f80727 +527 eb87182a7103488a 36c44a4aa013a7b1 +528 753945a0a4825f59 a0c7f8b7a38ce82d +529 6e19463c6c23ac36 19d21a8f1c0cc926 +530 28d2962fe1a2ec74 9a946702625c5b75 +531 83ea3602a3cebb6a 539c1d2a923979b9 +532 09c08edcc00c6841 a268e85ef673625d +533 6520d1fbfd114b89 3ed0225a325645d6 +534 887ccfd1791ea09d 9d7d1f29d1ac241b +535 6c4ca578dd985a9c a0c7f8b7a38ce82d +536 d9a3d7ebbdb8a7c0 abfdef6ab1bfa18e +537 4d0dc9fe24c15d68 e93aa9964c9fdaf4 +538 b42c670feebff209 7ae30e8e51e66d78 +539 a728e393edba66a1 9a946702625c5b75 +540 f7efe69254edaf4a 539c1d2a923979b9 +541 d7f74f7d7107a055 a268e85ef673625d +542 7f1606c1c4b5f350 eba36549fd8639b2 +543 6442f93e96a32377 18ffb3c1f09aec3a +544 b1cec0f4c4c918ea a0c7f8b7a38ce82d +545 c2f1b38425977c33 fa079e0607c31b4f +546 262875fd15dd282e ce1d81d37789fe13 +547 3047773149649d6e d323e850b1db6dfd +548 77f04462eefdd916 88692e25dedda87e +549 294acf285e9136fb 9a946702625c5b75 +550 afbc420a00e9e18b 539c1d2a923979b9 +551 8b387f80ea1d6f99 a268e85ef673625d +552 04b6cdb1cf43dbe1 a4dc52ff6372fd15 +553 c51887bc4f2c3115 6b9d7fcd05679c8d +554 6760931072bbd35d a0c7f8b7a38ce82d +555 4d09556e6cfd3ff0 fa079e0607c31b4f +556 b6187980a2a10e22 ca99a9b904a402e6 +557 12843cf0fec854f6 30091a461f64e7f8 +558 22817a631a876f73 e0d3d66b5ef40647 +559 5465df958b843d62 cf22b23e5f01a47c +560 fc015287fc055012 25362d4d609396df +561 47f69dbe431f9ebd 9a946702625c5b75 +562 ca727b44083c7c53 539c1d2a923979b9 +563 4e8dfc809c4532ec a268e85ef673625d +564 f5076fcc01c199e4 c3a104c86275fba7 +565 a1ad67f20a26e247 ee038c2d2d52ce95 +566 2c3cf93583160ad1 a0c7f8b7a38ce82d +567 cb1049383bc95c08 fa079e0607c31b4f +568 e20d6f0121da6128 067dbcfdc3ed913a +569 3f8a75a478a59d9d cfee20596eac0d76 +570 9ca5ba59e0ff6309 0934e6f26539eb76 +571 95155a0c9a3cee02 6ecd8787e03bad5e +572 2bb9554ee91e5434 36dad7d94bd6e7ac +573 186d907caf020994 9a946702625c5b75 +574 b65e6ac48693d5de 539c1d2a923979b9 +575 b47964a014922b22 a268e85ef673625d +576 59f28315d4d3b3bd a574f35396236764 +577 191e3e5d970a641d efc913d0265b7f2b +578 4dc01d5e1e48616e a0c7f8b7a38ce82d +579 1088af053f9c8dbf fa079e0607c31b4f +580 fe6c7c9a26a664a8 c5b1bcfab2d3c2f2 +581 c1f56ebc0bbc916d 9a946702625c5b75 +582 00a16ebfa71323c5 539c1d2a923979b9 +583 cafa31e1e61b57cb a268e85ef673625d +584 eb9a1652e9444fb9 0f6b9daa0161465d +585 1a356114082414f9 b1872b3e962a2029 +586 6483d334920ec429 a0c7f8b7a38ce82d +587 e71879589c6b720f 2c563c369cc8a281 +588 f11dc8c838675aa7 9a946702625c5b75 +589 2d7ef73dcf29386c 539c1d2a923979b9 +590 2742ce5e5ea5d092 a268e85ef673625d +591 6b69866d0c69bd0d e74e5c54fbfc38cf +592 75377079325c5e77 2afd3de70e8be1a9 +593 47999e21873abfde a0c7f8b7a38ce82d +594 f7ef7ebefd99d9a4 84ef5513fa54d3ce +595 e9fa3982e3264c1c 014a6f85066b24e7 +596 fac7c1072eea64e9 9c55590038cd9d81 +597 f0ab581ea7a1cafc 9a946702625c5b75 +598 c63ac9206ce15ae0 539c1d2a923979b9 +599 2791c8e220f8a469 a268e85ef673625d +600 2f422c89ce111c0b 4412bcf2d2c13611 +601 370689b40d7398b8 6f1139611b670408 +602 8d8a93292e433700 a0c7f8b7a38ce82d +603 9dc7bef4a67301b0 fa079e0607c31b4f +604 2c875b20820b31d5 74e470c032bf6a5d +605 85bb1bc775bda8b2 6688911f87d68254 +606 05fd59ef1d9f590b 488501b63e07f2f7 +607 cd0be60e388a5cf4 9a946702625c5b75 +608 230db362e59b84bf 539c1d2a923979b9 +609 d9107a09a7db26cb a268e85ef673625d +610 244c3a20a01483ee 554d92d1c6d54901 +611 d64be90f7f84276b 8601568442dce300 +612 a7b67e7543cb8116 a0c7f8b7a38ce82d +613 07a3262531ea7d1f fa079e0607c31b4f +614 1ad9b87259968700 0c33760061dc8bad +615 d22e80513454dfc0 306c14413133cf9d +616 364a132bdf92c01a 24a050c86bef483e +617 761207dd2c39e1fc 3dff3a826e7a4fdb +618 9e2dbaaf2cde029c becef4c423926806 +619 b8de798e4f69f64b 9a946702625c5b75 +620 5abacf7a682c929a 539c1d2a923979b9 +621 35db788222e76e6b a268e85ef673625d +622 d9d3324eecf8fe81 4b0ccee71fdffa75 +623 02ea85eee95f0d48 216043a93c369a33 +624 3b3810e82ba409cc a0c7f8b7a38ce82d +625 c852c85f7d9963de fa079e0607c31b4f +626 9d7f635b9a5798b7 0e4fe9518e4e54fb +627 dc5e325b1a8ec0d5 3d418d459c3d61c6 +628 acd2b9606e342bd9 dc1b20784f16c6b4 +629 81e69e5fae0b1052 83ca9cf6ef55b7df +630 742878b760085586 63ffb94855f41949 +631 61da172b733594f5 9a946702625c5b75 +632 e5409791e2893b67 539c1d2a923979b9 +633 9dc5b2329377fb08 a268e85ef673625d +634 8427279fc0ad359b b97dd4dda9fb8251 +635 f1934a971ddfcc9d d4d21c1b241c852d +636 289f7222c7ab68e9 a0c7f8b7a38ce82d +637 4294de3c266a4b09 fa079e0607c31b4f +638 9e388546896bbaaf 4d3bb8b359368576 +639 4814c5b9dcff1b13 9a946702625c5b75 +640 8a2d25bc19494ecb 539c1d2a923979b9 +641 13e79327bff04c44 a268e85ef673625d +642 20d6912e94a5d819 750941724aaf9b94 +643 2cbab85340bd9fdb c6c7e4932181c446 +644 ddd990569bfa59d5 a0c7f8b7a38ce82d +645 bb0b07fffdd7ede6 ea3dddf056f3618f +646 8879dbf0952cc284 9a946702625c5b75 +647 5d523e4ae514c8d8 539c1d2a923979b9 +648 32e66326130864c0 a268e85ef673625d +649 d13ea1eaf66f7dec 14c298e772c14095 +650 364aac80ef0ffaad cc4357f73a7cb915 +651 819d4bc35c3660b8 a0c7f8b7a38ce82d +652 e962d90665f4a973 8efca52de452e3a2 +653 804511e778730e34 7f61b834b60eddc9 +654 3f523779aea852e9 d29847575fc395e1 +655 3012d0b1bb40eb0c 9a946702625c5b75 +656 0db5a8b6a2070793 539c1d2a923979b9 +657 2bf87dc25ccafa12 a268e85ef673625d +658 41e4f41601fc1a55 dab1413c695274c6 +659 5a73afef7311dfe4 88d442a1041c1c66 +660 4ac7d4d466af00d6 a0c7f8b7a38ce82d +661 65061b4957367299 fa079e0607c31b4f +662 b7bd0e2b69c645da d6f0b8a09c1ceacd +663 9b4a145263deb4f7 b3f9261d56d63422 +664 ebf5ff2ad798e884 d020233473828cf8 +665 cb6a2f4db02e1e57 9a946702625c5b75 +666 b10bae43d6a86cd0 539c1d2a923979b9 +667 fef93608e92b1066 a268e85ef673625d +668 eb463482e2187f22 59eb4574d27dc528 +669 1da7cbb990073f17 913e106f7dff5348 +670 069dd5c4f2993c69 a0c7f8b7a38ce82d +671 e1f0fa936319b5a7 fa079e0607c31b4f +672 1a513bf929524ea1 0e46b94971ef6563 +673 de0f4b25bf9c95ed bd7e5fd5c4ed9caf +674 e9f9d3ed8669ed17 aae645b8cd9eb038 +675 3f1320d97eb6f5e5 a2e507fe0f2b1692 +676 682104b1d1fdbc08 6d3a363b4317fe56 +677 e5077414813ef839 9a946702625c5b75 +678 ebc95f4fa6fa1930 539c1d2a923979b9 +679 1c6e9cc078f418da a268e85ef673625d +680 2c11047ea72bfa0d 6cd1c772cc2496be +681 cb9c35ee27bce27a d2e3f214f811443c +682 a84b24706b404aee a0c7f8b7a38ce82d +683 fbfda4d953c0b564 fa079e0607c31b4f +684 f7595f547b77eaaa 6dee66485ef3e5ed +685 b465b8849f4d3893 04c412bb57598e47 +686 1ce3a6d15b2535fb eb3ac093c3f26774 +687 1e26411c903ce94d 225e2bd018b92aaf +688 34269c8ab88c1db8 f291ef0e680be222 +689 bdbd4997746492d1 9a946702625c5b75 +690 7e6dd203bf7aad83 539c1d2a923979b9 +691 0c647f78f98fcd89 a268e85ef673625d +692 40d51bf66cb6e193 4e8d0ab6abe3eace +693 71d704516c8c1d94 ae1474222da26de1 +694 cf3224c6dbaf4fd3 a0c7f8b7a38ce82d +695 55957b56e95d19a5 fa079e0607c31b4f +696 72e2b31ef002f93d f1c75c6d406e6f24 +697 21ebb4d3df8d3b0e 9a946702625c5b75 +698 090a176207b5425e 539c1d2a923979b9 +699 976c24e7fab5e18d a268e85ef673625d +700 3e0f3fdbb7e0b163 618d00f2fd4de800 +701 8229e70fbbde68a0 9c81db6b32651c38 +702 f5aa975d919f4fc5 a0c7f8b7a38ce82d +703 953b6afe9ba1303b a1f404c49e219729 +704 b717f8d8767984f4 9a946702625c5b75 +705 edf9c04a1ff8c58c 539c1d2a923979b9 +706 0341c815a39b022f a268e85ef673625d +707 9ec37f77254e9004 d1059723c270b04b +708 201d009b611dbe5a 6f9227e9eefc037a +709 4737007f5896d832 a0c7f8b7a38ce82d +710 1374f9adf1974004 b7a12a336fc12dd6 +711 8e42c7a60e57269c 8b9f87447cc94a3a +712 2a9dfb594b2fc3a1 694c7812deb78019 +713 9286502be802be2c 9a946702625c5b75 +714 924ae57cc6b5427c 539c1d2a923979b9 +715 c332f55e1df468c1 a268e85ef673625d +716 ddb15f385c4e2b8f df472150d4484e16 +717 991efd9f60b25fae 9543de1684c0b30b +718 b5013c10b63ed7e8 a0c7f8b7a38ce82d +719 9f6ee5f1cf335c75 fa079e0607c31b4f +720 cd357ef026ab4f7e f6a20d1352355e3d +721 54e4d944698a5a1e d5a0c99bb4e737b9 +722 c41a18e1d9bab8e8 d6473306fc19140c +723 035507796093cefd 9a946702625c5b75 +724 f7d1099acd23db05 539c1d2a923979b9 +725 1d455af9709272d1 a268e85ef673625d +726 831eaeb27a27b746 38ca8f9a94beaa33 +727 cb239fa2e0a3c1e0 930982dcf7aaba5b +728 9d918ac99a7a7269 a0c7f8b7a38ce82d +729 f429ae741af2b3e1 fa079e0607c31b4f +730 c21404891d7dbe0d 673283ec8eeabd15 +731 3d0527ec3c216a9e 51a3e46883269f10 +732 8d73734a692dd2aa a52b93065b4b63c2 +733 f009cf3c1a9aa55d 4bbccb299e87f11a +734 2b7739c0970ec427 5dab0231cd949037 +735 1cb306e71d98d5bc 9a946702625c5b75 +736 078f22108dca5270 539c1d2a923979b9 +737 f39c7f534aa7c457 a268e85ef673625d +738 c9efe98c07b3c1f5 50bb31a18b6417a0 +739 bede1fa982404c7c 835ec5dfa73c8946 +740 2dcd5ccf66889581 a0c7f8b7a38ce82d +741 30b556e745dd7b27 fa079e0607c31b4f +742 cc4513f777cec34b 5547424ec91dd712 +743 d85caccb0618ca5e b6a3d1decd979b8f +744 cca3730efbc7b64f a6bd52cc1cad862c +745 314c919fc1dae355 dd1bb277019b7f03 +746 293dd6c8aeed552a f6d1856e67f1a15f +747 6cddc9c9dd9f86fb 9a946702625c5b75 +748 70c0db263bcec7ce 539c1d2a923979b9 +749 e1e1ac5f6c788819 a268e85ef673625d +750 cf1a56221e388d05 6b5b9ec2f416359e +751 e18a1a76fa691a06 255a4fe17813f335 +752 a93dd213595108c9 a0c7f8b7a38ce82d +753 0230a503acf33736 fa079e0607c31b4f +754 f6cfd1a3d53f692e 4e54e7de153587c3 +755 264bff741770ed5a 9a946702625c5b75 +756 d93d08b5d97d3799 539c1d2a923979b9 +757 24e52f49ac29fa59 a268e85ef673625d +758 53f895a7f57560cf d9a8f4d332d48fd3 +759 c4fb20e69264a691 4d5c17c807893919 +760 a285e70b69b04067 a0c7f8b7a38ce82d +761 8be51200b6511a35 5c2db76fdf325c0f +762 50a4db9cfac8a0e6 9a946702625c5b75 +763 c4846570dfd0c41d 539c1d2a923979b9 +764 385b9eaa91b5331e a268e85ef673625d +765 cb961d3395c5271d e4cc15d137300fa2 +766 799cb7322f08af55 8f56bf6d0b23abde +767 d766e5725b477568 a0c7f8b7a38ce82d +768 de5c6fc8dded15a4 5856c9f4c4f6e0e6 +769 fc7af1c629f098f3 70d2d55c7ad28bcd +770 4f72229fd91a9263 41a64944c16dc008 +771 05e0c76bebadabfe 9a946702625c5b75 +772 86b2e45a73cbc8c8 539c1d2a923979b9 +773 e38a5d5984303f8e a268e85ef673625d +774 7b65ae0b9638c410 4c402521365c3556 +775 bd7d8f3e07fc4504 871ab312d9700fc7 +776 a1dd2061430b66bc a0c7f8b7a38ce82d +777 1df080df82c2a914 fa079e0607c31b4f +778 395c003790d4ffc3 f11021155ad2e07f +779 f1b58fbefaefbe60 984ebea968f5a943 +780 348985af66c830b5 a5df8f18a323f49f +781 df7e6096459613ce 9a946702625c5b75 +782 21010c7566e93935 539c1d2a923979b9 +783 306b2ac6939f1fa5 a268e85ef673625d +784 b4ba7894eb75a53e a87479428dc3aa31 +785 fc54a6a5cc43a811 1d1b77d2350829c2 +786 2cfe609927305fe2 a0c7f8b7a38ce82d +787 efeec444c14ea85b fa079e0607c31b4f +788 959ecd7ca52bc5e5 50531e85d949c0e1 +789 ef2e0e71b33a1378 144e9114fd0a7384 +790 2f2bafd724c5cc50 1e7e1310f2a03160 +791 f5d0ac0518aa2408 fd5a8b97e246ea05 +792 c1d53a58766938bf 1f54e56772f2df2b +793 0f8b322f1cb293d7 9a946702625c5b75 +794 69dafe4624dbd264 539c1d2a923979b9 +795 68e68e8037baf8ee a268e85ef673625d +796 b56405dc6cf07ee7 d2b5bfa3782af64d +797 30f2a24fe1f85950 5d5e2acd8d862ac4 +798 c10f8ec4048274cf a0c7f8b7a38ce82d +799 4678f64696a69a5c fa079e0607c31b4f +800 35e4c74162086005 9a92ea7874e71be9 +801 3ef9483a36fb393c f8df147904e8b17b +802 7fab5210cf4843cf 95007a1312ff95e3 +803 90cc5f2d05619dde 4dbc2e5e3012ae14 +804 b98fb0ba206e43a6 005d207f1c432f56 +805 3bd6b4269bd55a73 9a946702625c5b75 +806 b66b64aacdff7115 539c1d2a923979b9 +807 076fb506f3c3055c a268e85ef673625d +808 a75626b7ac407f25 5adc282fc5c87646 +809 bd9af408f4418399 fad55350c63ad36d +810 b5d7d8fd88f73592 a0c7f8b7a38ce82d +811 3694e9dd8a803ac6 fa079e0607c31b4f +812 5b5a282a2c78fd8e 72db14a195d3d8a7 +813 77b6502bae1b4a17 9a946702625c5b75 +814 827e135c13871630 539c1d2a923979b9 +815 3139b20ee10a5feb a268e85ef673625d +816 b59e0d46b98d4729 6baa95334fc93d52 +817 b64f166d708289f8 4ef010d6b3727e08 +818 930cb1fdc4bb6efe a0c7f8b7a38ce82d +819 ff512acc6e6d19ec 92c5c721d7d1ed08 +820 3f89f40d31cef975 9a946702625c5b75 +821 a2ffdeb7212e7046 539c1d2a923979b9 +822 9426853b6ae8d7aa a268e85ef673625d +823 3aa6eaa68799756a 514c8a1c22ae63fa +824 39da1eb38023b184 1e238064169feacf +825 c67d84a5ccc362fe a0c7f8b7a38ce82d +826 199e9775cd323618 f7633179a8e0cec0 +827 73b95d6a3f95b740 fd470c49f14391d8 +828 d652e6a74309c3d7 5ea4755d5dc231c4 +829 3c6ce7ebab82c1ea 9a946702625c5b75 +830 bdef5efe835dfc9e 539c1d2a923979b9 +831 a4e8c2cb0c6c179e a268e85ef673625d +832 31901d2982f517a3 05ce5bf73077ff60 +833 22869db962fbe035 630813197ffd05b0 +834 514ad6145ba2bd4d a0c7f8b7a38ce82d +835 cef94e36788d70cd fa079e0607c31b4f +836 8a3dc804cc2bf515 f85f127aa089bb04 +837 8bc960679b718317 1fe33bf395174503 +838 f9de9bde69cde63f 1463612b12f7ab3b +839 972252949870537f 9a946702625c5b75 +840 6ca35b2ba6602555 539c1d2a923979b9 +841 f9adb8209ccf9066 a268e85ef673625d +842 54fdfd5d0cb45c93 101679e27f869c9a +843 4756e4434c2010fc 0756422604fef7b3 +844 0da2f23d03411c87 a0c7f8b7a38ce82d +845 7dc5e2828a6dd43b fa079e0607c31b4f +846 04cb8fc9c3bdfbb2 2851de29c0f004fe +847 829fa7fa74b2d0e8 2d342fe22c709b33 +848 2b0a35e3ac0837fb c5247832b37bd107 +849 60022f59ec899343 fa11b3887c5841fe +850 a1927b6261348303 2d12ec667c65f4ac +851 baa864af8ce3daea 9a946702625c5b75 +852 1014f5b288d4c0c4 539c1d2a923979b9 +853 19508e0113790f49 a268e85ef673625d +854 4f04637209ce44a1 b719e18c5a5ddab7 +855 f8898616ec19d84c ab283616b9a20026 +856 dff186955a692dd5 a0c7f8b7a38ce82d +857 0aaf2db95493c197 fa079e0607c31b4f +858 743993c74a0404c2 fc015b2ec87aeee3 +859 d2cd2f3056fa0267 ad8f8cba86e638d7 +860 c3cda5f3d4c94399 c82a3bee612534ff +861 242e3dcefa61a653 00ab2436bd3cf65f +862 ed1db13fc495df2b ea61786ac3c85cd6 +863 9e3b418114b3bf25 9a946702625c5b75 +864 0770645e435358d9 539c1d2a923979b9 +865 08b4a735ebb0b41e a268e85ef673625d +866 2050af538a9c74f5 7f698913ad5c6726 +867 da7ca20be4978dd0 34690ff2aba14cab +868 e1c4f75f7def4bb4 a0c7f8b7a38ce82d +869 e3fc0ca0400998f2 fa079e0607c31b4f diff --git a/crates/socket-patch-core/tests/equivalence/poetry_rewrite.golden b/crates/socket-patch-core/tests/equivalence/poetry_rewrite.golden index f98b498a5..43ed4f134 100644 --- a/crates/socket-patch-core/tests/equivalence/poetry_rewrite.golden +++ b/crates/socket-patch-core/tests/equivalence/poetry_rewrite.golden @@ -32,91 +32,91 @@ 1.2.2_extra=3_crlf=false/re-run f81a1c4a49505bce a465f4f09bd7a1cb 1.2.2_extra=3_crlf=true 6051efc48c2d3992 f2af39ddf70ee7d4 1.2.2_extra=3_crlf=true/re-run e3ec0a6371139d8b a465f4f09bd7a1cb -1.3.2_extra=0_crlf=false 86cda4c82eee7e8b 4bbfd63a2999d619 -1.3.2_extra=0_crlf=false/re-run a9df9acaedd7db22 33bbc0c4a6aa1d37 -1.3.2_extra=0_crlf=true e92e1cd1beeb0002 2066c6ae7e285570 -1.3.2_extra=0_crlf=true/re-run f13a599ff9511fe7 33bbc0c4a6aa1d37 -1.3.2_extra=3_crlf=false fe9f2817767e5612 93587980e1c249f3 -1.3.2_extra=3_crlf=false/re-run d9728f0057845cbb 058fe94fee294277 -1.3.2_extra=3_crlf=true 253448255457216e 62ff09de389cc26e -1.3.2_extra=3_crlf=true/re-run 71d0a8d8ab2ecc77 058fe94fee294277 -1.4.2_extra=0_crlf=false 00a7bc0a3c89c49b 36b408b703f1d8aa -1.4.2_extra=0_crlf=false/re-run 4aa5eedcf2dd0b02 33bbc0c4a6aa1d37 -1.4.2_extra=0_crlf=true 44de4691acb61dba 0a9305875ef23cab -1.4.2_extra=0_crlf=true/re-run 47bf0330a4e93507 33bbc0c4a6aa1d37 -1.4.2_extra=3_crlf=false a3fb1d70a1207ea7 9ce5033d5fe06c49 -1.4.2_extra=3_crlf=false/re-run 60023b576de9ad30 058fe94fee294277 -1.4.2_extra=3_crlf=true bd8911bca06c1262 cb69eada9836807d -1.4.2_extra=3_crlf=true/re-run a5f5292e17ecb5f4 058fe94fee294277 -1.5.1_extra=0_crlf=false a1795ca286fa80ce 4e26992d707a9185 -1.5.1_extra=0_crlf=false/re-run f19230652767bb30 33bbc0c4a6aa1d37 -1.5.1_extra=0_crlf=true 5871c60c9d63aeee db8424880d0e4a52 -1.5.1_extra=0_crlf=true/re-run 6dab15e1eab2f462 33bbc0c4a6aa1d37 -1.5.1_extra=3_crlf=false 0b33aee716ad5a55 2c4b5cb224ddc8d0 -1.5.1_extra=3_crlf=false/re-run e26d96dd76e1b368 058fe94fee294277 -1.5.1_extra=3_crlf=true 161846bd33f1d508 0554981aff8135c6 -1.5.1_extra=3_crlf=true/re-run 3e4cf8de3fdcb6ea 058fe94fee294277 -1.6.1_extra=0_crlf=false d1e0442566c6ce49 fe6855296498d9fe -1.6.1_extra=0_crlf=false/re-run ea7966d58c9f2aab 33bbc0c4a6aa1d37 -1.6.1_extra=0_crlf=true db20a2c4edcafbf0 d61e14cff7784574 -1.6.1_extra=0_crlf=true/re-run 8f7c22713b6f70b6 33bbc0c4a6aa1d37 -1.6.1_extra=3_crlf=false afd5d875780cdf40 2db96bfd93c1e9cf -1.6.1_extra=3_crlf=false/re-run 647ef4eb652f1ba6 058fe94fee294277 -1.6.1_extra=3_crlf=true b37fcda617275f4b 26a0a64c5793d8ac -1.6.1_extra=3_crlf=true/re-run 1a4219f03efad32a 058fe94fee294277 -1.7.1_extra=0_crlf=false 6600136814fb4134 6e2694ad356a0756 -1.7.1_extra=0_crlf=false/re-run abdbbfe42c8b4d7e 33bbc0c4a6aa1d37 -1.7.1_extra=0_crlf=true 6a85a6a27c99cd2b 8369450b092cf661 -1.7.1_extra=0_crlf=true/re-run ac9d84b451f9c128 33bbc0c4a6aa1d37 -1.7.1_extra=3_crlf=false 020fa829b6a870bc 22176abf3ed1e1f3 -1.7.1_extra=3_crlf=false/re-run 31133977b68135e7 058fe94fee294277 -1.7.1_extra=3_crlf=true bcb1fd00c2d4d5bf e5be1777f605bf60 -1.7.1_extra=3_crlf=true/re-run ac38704d471666ab 058fe94fee294277 -1.8.5_extra=0_crlf=false 7b0c488a965c4f7b fdba5e6b6f532877 -1.8.5_extra=0_crlf=false/re-run 60ce065c6b04b5b1 33bbc0c4a6aa1d37 -1.8.5_extra=0_crlf=true 2094d208abbeabc2 bd0e4b35f46b1016 -1.8.5_extra=0_crlf=true/re-run 5903de75cc2030e8 33bbc0c4a6aa1d37 -1.8.5_extra=3_crlf=false e22381008c314e3d 79c02c70931e0527 -1.8.5_extra=3_crlf=false/re-run 147043d9e02c7a08 058fe94fee294277 -1.8.5_extra=3_crlf=true e42675d2895de9fb b319402713da11d4 -1.8.5_extra=3_crlf=true/re-run 9e97459a7ac1ffb1 058fe94fee294277 -2.0.1_extra=0_crlf=false 2775b8f1411fbadb 5e2d1de5fe694063 -2.0.1_extra=0_crlf=false/re-run 5a19ccf0764fac47 33bbc0c4a6aa1d37 -2.0.1_extra=0_crlf=true 17ebf61a05b76816 438f96aa4087c670 -2.0.1_extra=0_crlf=true/re-run 97eff076ab7188a2 33bbc0c4a6aa1d37 -2.0.1_extra=3_crlf=false bc38767ba9dcc6e6 f8b147dc42d7aebe -2.0.1_extra=3_crlf=false/re-run 44cce38f20f8f16f 058fe94fee294277 -2.0.1_extra=3_crlf=true b68b1e02f151ef48 84bd0d184fd4841d -2.0.1_extra=3_crlf=true/re-run 054b4ddcb4dcfafa 058fe94fee294277 -2.1.4_extra=0_crlf=false 6f62ddaa4adc50a4 757a21041de4bafe -2.1.4_extra=0_crlf=false/re-run 5b7e62f966b8d271 33bbc0c4a6aa1d37 -2.1.4_extra=0_crlf=true 8a8d93a2b2127129 6480c31767f7cbce -2.1.4_extra=0_crlf=true/re-run d1cd3eeea0692da9 33bbc0c4a6aa1d37 -2.1.4_extra=3_crlf=false 65364c0f4e7aa0e7 466d6a49990d9d78 -2.1.4_extra=3_crlf=false/re-run a3676e7eddbccf4a 058fe94fee294277 -2.1.4_extra=3_crlf=true 821fdbf37b56026b 1ca37ca1cf0d8978 -2.1.4_extra=3_crlf=true/re-run 25f65d16b322be1c 058fe94fee294277 -2.2.1_extra=0_crlf=false 7a500b5022ac388c 7220a5bd51319fbc -2.2.1_extra=0_crlf=false/re-run b484d2ecc12a5edb 33bbc0c4a6aa1d37 -2.2.1_extra=0_crlf=true 11b39909d694a4f5 545be68d50053014 -2.2.1_extra=0_crlf=true/re-run f73c0184185b55c8 33bbc0c4a6aa1d37 -2.2.1_extra=3_crlf=false 10b0bcde3632669b 81a4c77f7f4e49e1 -2.2.1_extra=3_crlf=false/re-run 679acf31e13b71a0 058fe94fee294277 -2.2.1_extra=3_crlf=true feaa6416a4b168a3 0e8c1642cda6ab31 -2.2.1_extra=3_crlf=true/re-run 4b8aa165ed772485 058fe94fee294277 -2.3.4_extra=0_crlf=false 1ad17cac9704b1ce fffc310706b37104 -2.3.4_extra=0_crlf=false/re-run 398fea1a1ac5d77b 33bbc0c4a6aa1d37 -2.3.4_extra=0_crlf=true d4578a811e547b2c 7df856e191dcd834 -2.3.4_extra=0_crlf=true/re-run 5f79a7161605a083 33bbc0c4a6aa1d37 -2.3.4_extra=3_crlf=false d38430f6b06c87f3 0a52b8d5379a1ab6 -2.3.4_extra=3_crlf=false/re-run ee7114aaad11f4f0 058fe94fee294277 -2.3.4_extra=3_crlf=true 89e72b13eccda257 351bb2773426b174 -2.3.4_extra=3_crlf=true/re-run 04c0dd27743659d0 058fe94fee294277 -2.4.3_extra=0_crlf=false 70d3006a3e404efc 1bfcdd185fb8ff92 -2.4.3_extra=0_crlf=false/re-run cb0289ac6716caab 33bbc0c4a6aa1d37 -2.4.3_extra=0_crlf=true ebe555cb2a5fb1f2 c52420d9986dd40d -2.4.3_extra=0_crlf=true/re-run 3f6277fd5f2ef21b 33bbc0c4a6aa1d37 -2.4.3_extra=3_crlf=false 7bcb0eb7f4f1150a 63289bf331a1b40c -2.4.3_extra=3_crlf=false/re-run c7b4e742d1f0f79b 058fe94fee294277 -2.4.3_extra=3_crlf=true f1ba10a6e2549703 9e944e2c50375cbc -2.4.3_extra=3_crlf=true/re-run 6c2fb99f914a5767 058fe94fee294277 +1.3.2_extra=0_crlf=false 86cda4c82eee7e8b 1d3bb5ee16c897a9 +1.3.2_extra=0_crlf=false/re-run b6be8314a6b6f96b 33bbc0c4a6aa1d37 +1.3.2_extra=0_crlf=true e92e1cd1beeb0002 fe9b368cd822b0a4 +1.3.2_extra=0_crlf=true/re-run 591a57e191d62369 33bbc0c4a6aa1d37 +1.3.2_extra=3_crlf=false fe9f2817767e5612 eb21c0138360987c +1.3.2_extra=3_crlf=false/re-run cda5cef6a75ae031 058fe94fee294277 +1.3.2_extra=3_crlf=true 253448255457216e 863d385f4b7376cf +1.3.2_extra=3_crlf=true/re-run b45e315a5ed7e888 058fe94fee294277 +1.4.2_extra=0_crlf=false 00a7bc0a3c89c49b c2d4ea2667ce54ae +1.4.2_extra=0_crlf=false/re-run 3f6f7ecdcd3f6edf 33bbc0c4a6aa1d37 +1.4.2_extra=0_crlf=true 44de4691acb61dba fe3525498f2a3e90 +1.4.2_extra=0_crlf=true/re-run 644fdb0f4791d31d 33bbc0c4a6aa1d37 +1.4.2_extra=3_crlf=false a3fb1d70a1207ea7 9734ca3a941a93b9 +1.4.2_extra=3_crlf=false/re-run cd1e595c026f426f 058fe94fee294277 +1.4.2_extra=3_crlf=true bd8911bca06c1262 21ac4fc20b87645b +1.4.2_extra=3_crlf=true/re-run 0c6592c0819f414a 058fe94fee294277 +1.5.1_extra=0_crlf=false a1795ca286fa80ce d65a8110bf76fc3f +1.5.1_extra=0_crlf=false/re-run 0e5a9155727ab93e 33bbc0c4a6aa1d37 +1.5.1_extra=0_crlf=true 5871c60c9d63aeee b05a38a41c60ac2f +1.5.1_extra=0_crlf=true/re-run a47b8e6b4cc083b0 33bbc0c4a6aa1d37 +1.5.1_extra=3_crlf=false 0b33aee716ad5a55 2904f81be6290dc9 +1.5.1_extra=3_crlf=false/re-run 201ad26d402b3d9c 058fe94fee294277 +1.5.1_extra=3_crlf=true 161846bd33f1d508 28dd71ff54970246 +1.5.1_extra=3_crlf=true/re-run 25aba0715d9d1d18 058fe94fee294277 +1.6.1_extra=0_crlf=false d1e0442566c6ce49 8878e83f979a6f17 +1.6.1_extra=0_crlf=false/re-run c0f0fb6ba5be2d38 33bbc0c4a6aa1d37 +1.6.1_extra=0_crlf=true db20a2c4edcafbf0 8004d50d5eb1e4ef +1.6.1_extra=0_crlf=true/re-run f631c75ba6b99463 33bbc0c4a6aa1d37 +1.6.1_extra=3_crlf=false afd5d875780cdf40 26261873a9befa43 +1.6.1_extra=3_crlf=false/re-run 1887a28a09c5ebb6 058fe94fee294277 +1.6.1_extra=3_crlf=true b37fcda617275f4b e6691ef87c19e806 +1.6.1_extra=3_crlf=true/re-run 152a9d87291ee5e6 058fe94fee294277 +1.7.1_extra=0_crlf=false 6600136814fb4134 3fe254646c64e870 +1.7.1_extra=0_crlf=false/re-run baf2193ccea94051 33bbc0c4a6aa1d37 +1.7.1_extra=0_crlf=true 6a85a6a27c99cd2b 21e82b0b8284effa +1.7.1_extra=0_crlf=true/re-run 804e20f41c3cedab 33bbc0c4a6aa1d37 +1.7.1_extra=3_crlf=false 020fa829b6a870bc d03e89c63e78ccf7 +1.7.1_extra=3_crlf=false/re-run 4eb1035335f75191 058fe94fee294277 +1.7.1_extra=3_crlf=true bcb1fd00c2d4d5bf cdf84f00e14301af +1.7.1_extra=3_crlf=true/re-run 7218c78e83092fd2 058fe94fee294277 +1.8.5_extra=0_crlf=false 7b0c488a965c4f7b bbdc55b6d43e085b +1.8.5_extra=0_crlf=false/re-run 61556a3098d858e7 33bbc0c4a6aa1d37 +1.8.5_extra=0_crlf=true 2094d208abbeabc2 f2f2e273f5190755 +1.8.5_extra=0_crlf=true/re-run 9cfeddf56eb4aecb 33bbc0c4a6aa1d37 +1.8.5_extra=3_crlf=false e22381008c314e3d 38d4c53ffde4c24c +1.8.5_extra=3_crlf=false/re-run 1acc532999d204dc 058fe94fee294277 +1.8.5_extra=3_crlf=true e42675d2895de9fb 393e968f6c7be246 +1.8.5_extra=3_crlf=true/re-run 6952032e97ab2e29 058fe94fee294277 +2.0.1_extra=0_crlf=false 2775b8f1411fbadb d758173a7c585fc7 +2.0.1_extra=0_crlf=false/re-run 348abcc26ddeaeeb 33bbc0c4a6aa1d37 +2.0.1_extra=0_crlf=true 17ebf61a05b76816 d597c3dcfae2dfd4 +2.0.1_extra=0_crlf=true/re-run 153548339a215865 33bbc0c4a6aa1d37 +2.0.1_extra=3_crlf=false bc38767ba9dcc6e6 bbb6ee86d230bc08 +2.0.1_extra=3_crlf=false/re-run da03a9e08601ea1c 058fe94fee294277 +2.0.1_extra=3_crlf=true b68b1e02f151ef48 bfae40ad2fab15dc +2.0.1_extra=3_crlf=true/re-run 912b37e429088bc3 058fe94fee294277 +2.1.4_extra=0_crlf=false 6f62ddaa4adc50a4 50230087bd298ac0 +2.1.4_extra=0_crlf=false/re-run 9b94892efa0c4446 33bbc0c4a6aa1d37 +2.1.4_extra=0_crlf=true 8a8d93a2b2127129 bf5248063f9492e9 +2.1.4_extra=0_crlf=true/re-run c3c3b33392294999 33bbc0c4a6aa1d37 +2.1.4_extra=3_crlf=false 65364c0f4e7aa0e7 df1b500c67ad7af1 +2.1.4_extra=3_crlf=false/re-run 94b01546394e7d44 058fe94fee294277 +2.1.4_extra=3_crlf=true 821fdbf37b56026b 699ce6231bf187a1 +2.1.4_extra=3_crlf=true/re-run c8799ecd34a87188 058fe94fee294277 +2.2.1_extra=0_crlf=false 7a500b5022ac388c 95ff060435e1f378 +2.2.1_extra=0_crlf=false/re-run 36d9fa16dcbf6682 33bbc0c4a6aa1d37 +2.2.1_extra=0_crlf=true 11b39909d694a4f5 d9bf29d64ef697b8 +2.2.1_extra=0_crlf=true/re-run 4a071a6cd19d8642 33bbc0c4a6aa1d37 +2.2.1_extra=3_crlf=false 10b0bcde3632669b 6e59c11998dee041 +2.2.1_extra=3_crlf=false/re-run c95abf046d5b7099 058fe94fee294277 +2.2.1_extra=3_crlf=true feaa6416a4b168a3 ba28e3bb5b15241d +2.2.1_extra=3_crlf=true/re-run d500c78d01b6b051 058fe94fee294277 +2.3.4_extra=0_crlf=false 1ad17cac9704b1ce aea8e6db516ee133 +2.3.4_extra=0_crlf=false/re-run 3674d79080de0c50 33bbc0c4a6aa1d37 +2.3.4_extra=0_crlf=true d4578a811e547b2c c2d7b6f0082908ac +2.3.4_extra=0_crlf=true/re-run f3683eb32c963b56 33bbc0c4a6aa1d37 +2.3.4_extra=3_crlf=false d38430f6b06c87f3 3a5dc288c23c575d +2.3.4_extra=3_crlf=false/re-run 9dea7a06a266c12e 058fe94fee294277 +2.3.4_extra=3_crlf=true 89e72b13eccda257 0478a72272d0e038 +2.3.4_extra=3_crlf=true/re-run adf80c79c9234f76 058fe94fee294277 +2.4.3_extra=0_crlf=false 70d3006a3e404efc fd42b5215e0256a9 +2.4.3_extra=0_crlf=false/re-run 3ccb55e3d68d5457 33bbc0c4a6aa1d37 +2.4.3_extra=0_crlf=true ebe555cb2a5fb1f2 677c448a1786735f +2.4.3_extra=0_crlf=true/re-run 544033e0bf27dee4 33bbc0c4a6aa1d37 +2.4.3_extra=3_crlf=false 7bcb0eb7f4f1150a a82f19a0fb90fa81 +2.4.3_extra=3_crlf=false/re-run a63781c9952063da 058fe94fee294277 +2.4.3_extra=3_crlf=true f1ba10a6e2549703 76c6c73d7c2f4273 +2.4.3_extra=3_crlf=true/re-run 8959a9775f2269d8 058fe94fee294277