al colorMode: ColorMode) : CssStyleScopeBase {
    private val keyframeStyles = mutableMapOf<CSSKeyframe, Modifier>()

    private val comparableKeyframeStyles
        get() = keyframeStyles.mapValues { (_, modifier) ->
            ComparableStyleScope().apply {
                modifier.toStyles().invoke(this)
            }
        }

    /** Describe the style of the element when this animation starts. */
    fun from(createStyle: () -> Modifier) {
        keyframeStyles += CSSKeyframe.From to createStyle()
    }

    /** Describe the style of the element when this animation ends. */
    fun to(createStyle: () -> Modifier) {
        keyframeStyles += CSSKeyframe.To to createStyle()
    }

    /** Describe the style of the element when the animation reaches some percent completion. */
    operator fun CSSSizeValue<CSSUnit.percent>.invoke(createStyle: () -> Modifier) {
        keyframeStyles += CSSKeyframe.Percentage(this) to createStyle()
    }

    /**
     * A way to assign multiple percentage values with the same style.
     *
     * For example, this can be useful if you have an animation that changes, then stops for a bit, and then continues
     * to change again.
     *
     * ```
     * val Example = Keyframes {
     *    from { Modifier.opacity(0) }
     *    each(20.percent, 80.percent) { Modifier.opacity(1) }
     *    to { Modifier.opacity(1) }
     * }
     * ```
     */
    fun each(vararg keys: CSSSizeValue<CSSUnit.percent>, createStyle: () -> Modifier) {
        keyframeStyles += CSSKeyframe.Combine(keys.toList()) to createStyle()
    }

    override fun equals(other: Any?): Boolean {
        if (other !is KeyframesBuilder) return false
        return this === other || this.comparableKeyframeStyles == other.comparableKeyframeStyles
    }

    override fun hashCode(): Int {
        return comparableKeyframeStyles.hashCode()
    }

    internal fun addKeyframesIntoStylesheet(stylesheet: StyleSheet, keyframesName: String) {
        val keyframeRules = keyframeStyles.map { (keyframe, modifier) ->
            val styles = modifier.toStyles()

            val cssRuleBuilder = StyleScopeBuilder()
            styles.invoke(cssRuleBuilder)

            CSSKeyframeRuleDeclaration(keyframe, cssRuleBuilder)
        }

        stylesheet.add(CSSKeyframesRuleDeclaration(keyframesName, keyframeRules))
    }
}

/**
 * Define a set of keyframes that can later be referenced in animations.
 *
 * For example,
 *
 * ```
 * val BounceKeyframes = Keyframes {
 *   from { Modifier.translateX((-50).percent) }
 *   to { Modifier.translateX((50).percent) }
 * }
 *
 * // Later
 * Div(
 *   Modifier
 *     .size(100.px).backgroundColor(Colors.Red)
 *     .animation(BounceKeyframes.toAnimation(
 *       duration = 2.s,
 *       timingFunction = AnimationTimingFunction.EaseIn,
 *       direction = AnimationDirection.Alternate,
 *       iterationCount = AnimationIterationCount.Infinite
 *     ))
 *     .toAttrs()
 * )
 * ```
 *
 * If you are not using Kobweb, e.g. if you're using these widgets as a standalone library, you will have to manually
 * register your keyframes:
 *
 * ```
 * SilkFoundationStyles(
 *   initSilk = { ctx ->
 *     /*...*/
 *     ctx.theme.registerKeyframes("bounce", BounceKeyframes)
 *   }
 * )
 * ```
 *
 * Otherwise, the Kobweb Gradle plugin will do this for you.
 */
class Keyframes(internal val init: KeyframesBuilder.() -> Unit) {
    companion object {
        internal fun is


       for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                if ((i == 0 || i == m - 1 || j == 0 || j == n - 1) && board[i][j] == 'O') {
                    dfs(board, i, j);
                }
            }
        }

        // Capture surrounded regions and revert 'T' to 'O'
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                if (board[i][j] == 'O') {
                    board[i][j] = 'X';
                } else if (board[i][j] == 'T') {
                    board[i][j] = 'O';
                }
            }
        }
    }

    private void dfs(char[][] board, int i, int j) {
        if (i < 0 || i >= board.length || j < 0 || j >= board[i].length || board[i][j] != 'O') {
            return;
        }
        board[i][j] = 'T'; // Mark as visited
        dfs(board, i + 1, j);
        dfs(board, i - 1, j);
        dfs(board, i, j + 1);
        dfs(board, i, j - 1);
    }
}
// Most asked problems at FAANG companies: https://docs.google.com/spreadsheets/d/1hzP8j7matoUiJ15N-RhsL5Dmig8_E3aP/edit#gid=1377915986

// Leetcode Link: https://leetcode.com/problems/time-based-key-value-store/

// Video Solution: https://www.youtube.com/watch?v=dP4cb8zbohY

**************** Java Solution ***********************
class TimeMap {
private Map<String, TreeMap<Integer, String>> map;

    public TimeMap() {
        map = new HashMap<>();
    }

    public void set(String key, String value, int timestamp) {
        map.computeIfAbsent(key, k -> new TreeMap<>()).put(timestamp, value);
    }

    public String get(String key, int timestamp) {
        TreeMap<Integer, String> treeMap = map.get(key);
        if (treeMap == null) {
            return "";
        }
        Map.Entry<Integer, String> entry = treeMap.floorEntry(timestamp);
        return entry == null ? "" : entry.getValue();
    }
}

/**
 * Your TimeMap object will be instantiated and called as such:
 * TimeMap obj = new TimeMap();
 * obj.set(key,value,timestamp);
 * String param_2 = obj.get(key,timestamp);
 */
// Most asked problems at FAANG companies: https://docs.google.com/spreadsheets/d/1hzP8j7matoUiJ15N-RhsL5Dmig8_E3aP/edit#gid=1377915986

// Leetcode Link: https://leetcode.ca/all/759.html

// Video Solution: https://www.youtube.com/watch?v=99l7goR4y0U

**************** Java Solution ***********************

import java.util.ArrayList;
import java.util.List;
import java.util.PriorityQueue;

class Interval {
    int start;
    int end;

    Interval(int start, int end) {
        this.start = start;
        this.end = end;
    }
}

class Solution { // Removed the 'public' modifier
    public List<Interval> employeeFreeTime(List<List<Interval>> schedule) {
        List<Interval> result = new ArrayList<>();
        PriorityQueue<Interval> pq = new PriorityQueue<>((a, b) -> a.start - b.start);

        // Add all intervals to the priority queue
        for (List<Interval> intervals : schedule) {
            pq.addAll(intervals);
        }

        Interval prev = pq.poll();
        while (!pq.isEmpty()) {
            Interval curr = pq.poll();
            if (prev.end < curr.start) {
                // There is a gap between prev and curr, which is a common free time
                result.add(new Interval(prev.end, curr.start));
                prev = curr;
            } else


"" + u.LastName + "	";
      temp += "" + u.Email + "	";
      temp += "" + u.PhoneNumber + "	";
      temp += "" + u.Role + "	";
      temp += "" + u.Address + "	";
      temp +=
        "

 <button class='btn btn-success' type=submit onclick=\"v.Edit('row" +
        u.id +
        "')\"  > Edit </button>  <button  class='btn btn-danger' type=submit onclick=\"v.DeleteButton(" +
        u.id +
        ")\"  > Delete </button>

<button  class='btn btn-primary' type=submit onclick=\"v.SaveButton(" +
        u.id +
        ")\"  > Save </button> <button  class='btn btn-warning' type=submit onclick=\"v.CancelButton(" +
        u.id +
        ')" > Cancel</button>

';
    });

    display_table.innerHTML = temp;
  }

  SaveButton(id: string): void {
    console.log("argument of save button", id);
    let rowid = "row" + id;

    let selectedrow = document.getElementById(rowid);
    let selectedrowcontent = selectedrow.innerHTML;
    console.log("select row content", selectedrowcontent);
    let idint = parseInt(id);
    editedContent[idint] = selectedrowcontent;

    let is_current = selectedrow.isContentEditable;
    if (is_current) {
      selectedrow.contentEditable = "false";
    }
    let id_name = "Edit_Panel" + rowid;
    let id_name1 = "Save_Panel" + rowid;
    let editPanel: HTMLElement = document.getElementById(
      id_name
    ) as HTMLElement;
    let savePanel: HTMLElement = document.getElementById(
      id_name1
    ) as HTMLElement;
    if (editPanel.style.display == "none") {
      editPanel.style.display = "block";
      savePanel.style.display = "none";
    }
  }
  CancelButton(id: string): void {
    console.log("id", id);
    let intid = parseInt(id);
    console.log("in cancel button");
    console.log("intid", intid);
    console.log(editedContent[intid]);
    let temp = "";
    let rowid = "row" + id;
    console.log(rowid);
    let selectedrow1 = document.getElementById(rowid);
    let selectedrow1c = selectedrow1.innerHTML;
    console.log("cancel row", selectedrow1);

    let is_editable = selectedrow1.isContentEditable;
    if (is_editable) {
      selectedrow1.contentEditable = "false";
    }
    let i;
    for (i = 1; i <= jsoncopy.length; i++) {
      if (editedContent[i]) {
        temp += "
" + editedContent[i] + "
";
      }
      if (!editedContent[i]) {
        let u = jsoncopy[i - 1];
        temp += "
";
        temp += "" + u.FirstName + "	";
        temp += "" + u.MiddleName + "	";
        temp += "" + u.LastName + "	";
        temp += "" + u.Email + "	";
        temp += "" + u.PhoneNumber + "	";
        temp += "" + u.Role + "	";
        temp += "" + u.Address +


KP28R_BKP_Shift, 0   @ bitWidth 32 (BKP)

    .equ RTC_BKP29R, RTC_BASE + 0xC4 @ (backup register)
        .equ RTC_BKP29R_BKP_Shift, 0   @ bitWidth 32 (BKP)

    .equ RTC_BKP30R, RTC_BASE + 0xC8 @ (backup register)
        .equ RTC_BKP30R_BKP_Shift, 0   @ bitWidth 32 (BKP)

    .equ RTC_BKP31R, RTC_BASE + 0xCC @ (backup register)
        .equ RTC_BKP31R_BKP_Shift, 0   @ bitWidth 32 (BKP)

@=========================== OTG_FS_GLOBAL ===========================@
.equ OTG_FS_GLOBAL_BASE, 0x50000000 @ (USB on the go full speed)
    .equ OTG_FS_GLOBAL_FS_GOTGCTL, OTG_FS_GLOBAL_BASE + 0x0 @ (OTG_FS control and status register  OTG_FS_GOTGCTL)
        .equ OTG_FS_GLOBAL_FS_GOTGCTL_SRQSCS, 1 << 0   @ bitWidth 1 (Session request success)
        .equ OTG_FS_GLOBAL_FS_GOTGCTL_SRQ, 1 << 1   @ bitWidth 1 (Session request)
        .equ OTG_FS_GLOBAL_FS_GOTGCTL_HNGSCS, 1 << 8   @ bitWidth 1 (Host negotiation success)
        .equ OTG_FS_GLOBAL_FS_GOTGCTL_HNPRQ, 1 << 9   @ bitWidth 1 (HNP request)
        .equ OTG_FS_GLOBAL_FS_GOTGCTL_HSHNPEN, 1 << 10   @ bitWidth 1 (Host set HNP enable)
        .equ OTG_FS_GLOBAL_FS_GOTGCTL_DHNPEN, 1 << 11   @ bitWidth 1 (Device HNP enabled)
        .equ OTG_FS_GLOBAL_FS_GOTGCTL_CIDSTS, 1 << 16   @ bitWidth 1 (Connector ID status)
        .equ OTG_FS_GLOBAL_FS_GOTGCTL_DBCT, 1 << 17   @ bitWidth 1 (Long/short debounce time)
        .equ OTG_FS_GLOBAL_FS_GOTGCTL_ASVLD, 1 << 18   @ bitWidth 1 (A-session valid)
        .equ OTG_FS_GLOBAL_FS_GOTGCTL_BSVLD, 1 << 19   @ bitWidth 1 (B-session valid)

    .equ OTG_FS_GLOBAL_FS_GOTGINT, OTG_FS_GLOBAL_BASE + 0x4 @ (OTG_FS interrupt register  OTG_FS_GOTGINT)
        .equ OTG_FS_GLOBAL_FS_GOTGINT_SEDET, 1 << 2   @ bitWidth 1 (Session end detected)
        .equ OTG_FS_GLOBAL_FS_GOTGINT_SRSSCHG, 1 << 8   @ bitWidth 1 (Session request success status  change)
        .equ OTG_FS_GLOBAL_FS_GOTGINT_HNSSCHG, 1 << 9   @ bitWidth 1 (Host negotiation success status  change)
        .equ OTG_FS_GLOBAL_FS_GOTGINT_HNGDET, 1 << 17   @ bitWidth 1 (Host negotiation detected)
        .equ OTG_FS_GLOBAL_FS_GOTGINT_ADTOCHG, 1 << 18   @ bitWidth 1 (A-device timeout change)
        .equ OTG_FS_GLOBAL_FS_GOTGINT_DBCDNE, 1 << 19   @ bitWidth 1 (Debounce done)

    .equ OTG_FS_GLOBAL_FS_GAHBCFG, OTG_FS_GLOBAL_BASE + 0x8 @ (OTG_FS AHB configuration register  OTG_FS_GAHBCFG)
        .e


44 29.44 0 0 0 42.688 0l320-335.872 319.872 335.872a29.44 29.44 0 0 0 42.688 0l.384-.384a32 32 0 0 0 0-44.16L535.168 344.32a32 32 0 0 0-46.336 0"})]))}}),b=A,k=a({name:"Avatar",__name:"avatar",setup(r){return(l,u)=>(t(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e("path",{fill:"currentColor",d:"M628.736 528.896A416 416 0 0 1 928 928H96a415.872 415.872 0 0 1 299.264-399.104L512 704zM720 304a208 208 0 1 1-416 0 208 208 0 0 1 416 0"})]))}}),S=k,q=a({name:"Back",__name:"back",setup(r){return(l,u)=>(t(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e("path",{fill:"currentColor",d:"M224 480h640a32 32 0 1 1 0 64H224a32 32 0 0 1 0-64"}),e("path",{fill:"currentColor",d:"m237.248 512 265.408 265.344a32 32 0 0 1-45.312 45.312l-288-288a32 32 0 0 1 0-45.312l288-288a32 32 0 1 1 45.312 45.312z"})]))}}),F=q,D=a({name:"Baseball",__name:"baseball",setup(r){return(l,u)=>(t(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e("path",{fill:"currentColor",d:"M195.2 828.8a448 448 0 1 1 633.6-633.6 448 448 0 0 1-633.6 633.6zm45.248-45.248a384 384 0 1 0 543.104-543.104 384 384 0 0 0-543.104 543.104"}),e("path",{fill:"currentColor",d:"M497.472 96.896c22.784 4.672 44.416 9.472 64.896 14.528a256.128 256.128 0 0 0 350.208 350.208c5.056 20.48 9.856 42.112 14.528 64.896A320.128 320.128 0 0 1 497.472 96.896zM108.48 491.904a320.128 320.128 0 0 1 423.616 423.68c-23.04-3.648-44.992-7.424-65.728-11.52a256.128 256.128 0 0 0-346.496-346.432 1736.64 1736.64 0 0 1-11.392-65.728z"})]))}}),P=D,R=a({name:"Basketball",__name:"basketball",setup(r){return(l,u)=>(t(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[e("path",{fill:"currentColor",d:"M778.752 788.224a382.464 382.464 0 0 0 116.032-245.632 256.512 256.512 0 0 0-241.728-13.952 762.88 762.88 0 0 1 125.696 259.584zm-55.04 44.224a699.648 699.648 0 0 0-125.056-269.632 256.128 256.128 0 0 0-56.064 331.968 382.72 382.72 0 0 0 181.12-62.336m-254.08 61.248A320.128 320.128 0 0 1 557.76 513.6a715.84 715.84 0 0 0-48.192-48.128 320.128 320.128 0 0 1-379.264 88.384 382.4 382.4 0 0 0 110.144 229.696 382.4 382.4 0 0 0 229.184 110.08zM129.28 481


-0.1.2.2--py36h470a237_1.simg qcollectiongenerator $@','singularity exec ${BIOCONTAINER_DIR}/biocontainers/ecopy/ecopy-0.1.2.2--py36h470a237_1.simg qcollectiongenerator $*')
set_shell_function("qdbus",'singularity exec ${BIOCONTAINER_DIR}/biocontainers/ecopy/ecopy-0.1.2.2--py36h470a237_1.simg qdbus $@','singularity exec ${BIOCONTAINER_DIR}/biocontainers/ecopy/ecopy-0.1.2.2--py36h470a237_1.simg qdbus $*')
set_shell_function("qdbuscpp2xml",'singularity exec ${BIOCONTAINER_DIR}/biocontainers/ecopy/ecopy-0.1.2.2--py36h470a237_1.simg qdbuscpp2xml $@','singularity exec ${BIOCONTAINER_DIR}/biocontainers/ecopy/ecopy-0.1.2.2--py36h470a237_1.simg qdbuscpp2xml $*')
set_shell_function("qdbusviewer",'singularity exec ${BIOCONTAINER_DIR}/biocontainers/ecopy/ecopy-0.1.2.2--py36h470a237_1.simg qdbusviewer $@','singularity exec ${BIOCONTAINER_DIR}/biocontainers/ecopy/ecopy-0.1.2.2--py36h470a237_1.simg qdbusviewer $*')
set_shell_function("qdbusxml2cpp",'singularity exec ${BIOCONTAINER_DIR}/biocontainers/ecopy/ecopy-0.1.2.2--py36h470a237_1.simg qdbusxml2cpp $@','singularity exec ${BIOCONTAINER_DIR}/biocontainers/ecopy/ecopy-0.1.2.2--py36h470a237_1.simg qdbusxml2cpp $*')
set_shell_function("qdoc",'singularity exec ${BIOCONTAINER_DIR}/biocontainers/ecopy/ecopy-0.1.2.2--py36h470a237_1.simg qdoc $@','singularity exec ${BIOCONTAINER_DIR}/biocontainers/ecopy/ecopy-0.1.2.2--py36h470a237_1.simg qdoc $*')
set_shell_function("qhelpconverter",'singularity exec ${BIOCONTAINER_DIR}/biocontainers/ecopy/ecopy-0.1.2.2--py36h470a237_1.simg qhelpconverter $@','singularity exec ${BIOCONTAINER_DIR}/biocontainers/ecopy/ecopy-0.1.2.2--py36h470a237_1.simg qhelpconverter $*')
set_shell_function("qhelpgenerator",'singularity exec ${BIOCONTAINER_DIR}/biocontainers/ecopy/ecopy-0.1.2.2--py36h470a237_1.simg qhelpgenerator $@','singularity exec ${BIOCONTAINER_DIR}/biocontainers/ecopy/ecopy-0.1.2.2--py36h470a237_1.simg qhelpgenerator $*')
set_shell_function("qlalr",'singularity exec ${BIOCONTAINER_DIR}/biocontainers/ecopy/ecopy-0.1.2.2--py36h470a237_1.simg qlalr $@','singularity exec ${BIOCONTAINER_DIR}/biocontainers/ecopy/ecopy-0.1.2.2--py36h470a237_1.simg qlalr $*')
set_shell_function("qmake",'singularity exec ${BIOCONTAINER_DIR}/biocontainers/ecopy/ecopy-0.1.2.2--py36h


5b9a5d5d97c07c5_toRye(nil, (*image.RGBA).SubImage))
	m["go(*image.RGBA64)//(?)"] = mustBuiltin(conv_func_bc3b4b105fc950e8_toRye(nil, func(v image.RGBA64) struct_37fa7b4335f08ced { return (struct_37fa7b4335f08ced)(v) }))
	m["go(*image.RGBA64)//at"] = mustBuiltin(conv_func_1d5d36e15532d8f5_toRye(nil, (*image.RGBA64).At))
	m["go(*image.RGBA64)//bounds"] = mustBuiltin(conv_func_58824188e7d2f16d_toRye(nil, (*image.RGBA64).Bounds))
	m["go(*image.RGBA64)//color-model"] = mustBuiltin(conv_func_98aa6695382aace5_toRye(nil, (*image.RGBA64).ColorModel))
	m["go(*image.RGBA64)//opaque"] = mustBuiltin(conv_func_082fc6e903d7937f_toRye(nil, (*image.RGBA64).Opaque))
	m["go(*image.RGBA64)//pix!"] = mustBuiltin(conv_func_1082728ad75bdd14_toRye(nil, func(s *image.RGBA64, v []uint8) *image.RGBA64 { s.Pix = v; return s }))
	m["go(*image.RGBA64)//pix-offset"] = mustBuiltin(conv_func_b56d827e2c9a4062_toRye(nil, (*image.RGBA64).PixOffset))
	m["go(*image.RGBA64)//pix?"] = mustBuiltin(conv_func_2340e0e4359e3cef_toRye(nil, func(s *image.RGBA64) []uint8 { return s.Pix }))
	m["go(*image.RGBA64)//rect!"] = mustBuiltin(conv_func_f7893ebefe4a5a82_toRye(nil, func(s *image.RGBA64, v image.Rectangle) *image.RGBA64 { s.Rect = v; return s }))
	m["go(*image.RGBA64)//rect?"] = mustBuiltin(conv_func_83eb8ff8cb2cdbad_toRye(nil, func(s *image.RGBA64) *image.Rectangle { return &s.Rect }))
	m["go(*image.RGBA64)//rgba-64-at"] = mustBuiltin(conv_func_61055f9ed425dd8a_toRye(nil, (*image.RGBA64).RGBA64At))
	m["go(*image.RGBA64)//set"] = mustBuiltin(conv_func_e90af98f7e7b5495_toRye(nil, (*image.RGBA64).Set))
	m["go(*image.RGBA64)//set-rgba-64"] = mustBuiltin(conv_func_209f45349d6b4e6a_toRye(nil, (*image.RGBA64).SetRGBA64))
	m["go(*image.RGBA64)//stride!"] = mustBuiltin(conv_func_ba7a1bb0c6c5687b_toRye(nil, func(s *image.RGBA64, v int) *image.RGBA64 { s.Stride = v; return s }))
	m["go(*image.RGBA64)//stride?"] = mustBuiltin(conv_func_fc14f0dbcc50e0c2_toRye(nil, func(s *image.RGBA64) int { return s.Stride }))
	m["go(*image.RGBA64)//sub-image"] = mustBuiltin(conv_func_772b817c6a50e3e3_toRye(nil, (*image.RGBA64).SubImage))
	m["go(*image.Rectangle)//(?)"] = mustBuiltin(conv_func_d45ca4954d2607da_toRye(nil, func(v image.Rectangle)


/*	$NetBSD: core_elf64.c,v 1.1 2001/12/09 23:06:00 thorpej Exp $	*/

/*
 * Copyright (c) 2001 Wasabi Systems, Inc.
 * All rights reserved.
 *
 * Written by Jason R. Thorpe for Wasabi Systems, Inc.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *	This product includes software developed for the NetBSD Project by
 *	Wasabi Systems, Inc.
 * 4. The name of Wasabi Systems, Inc. may not be used to endorse
 *    or promote products derived from this software without specific prior
 *    written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL WASABI SYSTEMS, INC
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */

#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: core_elf64.c,v 1.1 2001/12/09 23:06:00 thorpej Exp $");

#define	ELFSIZE	64

#include "core_elf32.c"


tency_bucket	NQ поисковых запросов, объединенных из разных ведер.

Search Top_K	Среднее число и 99-й процентиль Top_K поисковых запросов, выполненных каждым узлом запроса за последние две минуты.	p99:
 histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_querynode_search_topk_bucket{app_kubernetes_io_instance=~"$instance", app_kubernetes_io_name="$app_name", namespace="$namespace"}[2m])))
 avg:
 sum(increase(milvus_querynode_search_topk_sum{app_kubernetes_io_instance=~"$instance", app_kubernetes_io_name="$app_name", namespace="$namespace"}[2m])) by(pod, node_id) / sum(increase(milvus_querynode_search_topk_count{app_kubernetes_io_instance=~"$instance", app_kubernetes_io_name="$app_name", namespace="$namespace"}[2m])) by(pod, node_id)	milvus_querynode_load_segment_latency_bucket	Число Top_K поисковых запросов.

Поисковая группа Top_K	Среднее число и 99-й процентиль Top_K поисковых запросов, объединенных и выполненных каждым узлом запроса за последние две минуты.	p99:
 histogram_quantile(0.99, sum by (le, pod, node_id) (rate(milvus_querynode_search_group_topk_bucket{app_kubernetes_io_instance=~"$instance", app_kubernetes_io_name="$app_name", namespace="$namespace"}[2m])))
 avg:
 sum(increase(milvus_querynode_search_group_topk_sum{app_kubernetes_io_instance=~"$instance", app_kubernetes_io_name="$app_name", namespace="$namespace"}[2m])) by(pod, node_id) / sum(increase(milvus_querynode_search_group_topk_count{app_kubernetes_io_instance=~"$instance", app_kubernetes_io_name="$app_name", namespace="$namespace"}[2m])) by(pod, node_id)	milvus_querynode_load_segment_latency_bucket	Top_K поисковых запросов, объединенных из разных ведер.

Количество вытесненных запросов на чтение	Количество запросов на чтение, отклоненных в секунду каждым узлом запроса в течение последних двух минут.	sum(increase(


listChanged;                                 // 0x0630(0x0010)(Edit, BlueprintVisible, ZeroConstructor, DisableEditOnInstance, BlueprintAssignable, BlueprintCallable)
	class USoundBase*                             MatchMakingSucceededSound;                         // 0x0640(0x0008)(Edit, BlueprintVisible, ZeroConstructor, DisableEditOnInstance, NoDestructor, HasGetValueTypeHash)
	class UFortPlaylistAthena*                    PlaylistData;                                      // 0x0648(0x0008)(Edit, BlueprintVisible, ZeroConstructor, DisableEditOnInstance, NoDestructor, HasGetValueTypeHash)
	bool                                          IsShowingMatchmakingDetails;                       // 0x0650(0x0001)(Edit, BlueprintVisible, ZeroConstructor, DisableEditOnInstance, IsPlainOldData, NoDestructor, HasGetValueTypeHash)
	uint8                                         Pad_651[0x7];                                      // 0x0651(0x0007)(Fixing Size After Last Property [ Dumper-7 ])
	struct FSlateFontInfo                         PlaylistMainFont;                                  // 0x0658(0x0058)(Edit, BlueprintVisible, DisableEditOnInstance, HasGetValueTypeHash)
	struct FSlateFontInfo                         PlaylistActivityFont;                              // 0x06B0(0x0058)(Edit, BlueprintVisible, DisableEditOnInstance, HasGetValueTypeHash)
	class UFont*                                  PlaylistActivityFontFamily;                        // 0x0708(0x0008)(Edit, BlueprintVisible, ZeroConstructor, DisableEditOnInstance, NoDestructor, HasGetValueTypeHash)
	class USoundBase*                             CreativeMatchmakingSucceededSound;                 // 0x0710(0x0008)(Edit, BlueprintVisible, ZeroConstructor, DisableEditOnInstance, NoDestructor, HasGetValueTypeHash)
	class USoundBase*                             MatchMakingSucceededOverrideSound;                 // 0x0718(0x0008)(Edit, BlueprintVisible, ZeroConstructor, Transient, DisableEditOnInstance, NoDestructor, HasGetValueTypeHash)

public:
	void AnimateViolator();
	void BndEvt__PlayButton_K2Node_ComponentBoundEvent_0_CommonButtonClicked__DelegateSignature(class UCommonButtonLegacy* Button);
	void Construct();
	void ExecuteUbergraph_AthenaLobbyMatchmakingPlay(int32 EntryPoint);
	void InitFonts();
	void OnAvailablePlaylistsUpdated();
	void OnCrossplayPreferencesChanged(bool IsCrossplayEnabled);
	void OnInitialized();
	void OnMatchmakingFinishedBlueprint(bool bSuccess, const class UFortPlaylistAthena* Playlist);
	void OnSetCancelButtonText(const class FText& CancelButtonText);
	void OnSetPlayButtonText(const class FText& PlayButtonText);
	void OnViolatorStyleRefreshed(const EFortMatchmakingViolatorStyle NewViolatorStyle);
	void PickMatchmakingSucceededSound(class USoundBase** SelectedMatchmakingSucceededSound);
	void PlaylistActivityChanged(const struct FPlaylistFrontEndData& NewPlaylist, const class FText& ActivityName, EFortLobbyType LobbyType);
	void PlaylistChanged(const struct FPlaylistFrontEndData& NewPlaylist, const class FText& PlaylistCMSOverrideName, EFortLobbyType LobbyType);
	void SetBasePanelColor(const struct FLinearColor& NewColor);
	void ShouldShowMatchmakingDetails(bool bShow);
	void Update_Playlist_Info(struct FPlaylistFrontEndData& NewPlaylist, class FText& PlaylistTitleOverride, EFortLobbyType& LobbyType);

public:
	static class UClass* StaticClass()
	{
		return StaticBP


5-01-04)

### Bug fixes

* [#478](https://github.com/rubocop/rubocop-performance/pull/478): Fix `Performance/RedundantStringChars` cop error in case of implicit receiver. ([@viralpraxis][])
* [#480](https://github.com/rubocop/rubocop-performance/pull/480): Fix `Performance/Squeeze` cop error on frozen AST string node value. ([@viralpraxis][])

## 1.23.0 (2024-11-14)

### New features

* [#474](https://github.com/rubocop/rubocop-performance/pull/474): Add new `Performance/StringBytesize` cop. ([@viralpraxis][])

## 1.22.1 (2024-09-17)

### Bug fixes

* [#468](https://github.com/rubocop/rubocop-performance/issues/468): Fix false positives for `Performance/BigDecimalWithNumericArgument` when using float argument for `BigDecimal`. ([@koic][])

## 1.22.0 (2024-09-16)

### Bug fixes

* [#454](https://github.com/rubocop/rubocop-performance/issues/454): Fix false positives for `Performance/BigDecimalWithNumericArgument` when using BigDecimal 3.1+. ([@koic][])

### Changes

* [#385](https://github.com/rubocop/rubocop-performance/issues/385): Disable `Performance/BlockGivenWithExplicitBlock` by default. ([@earlopain][])
* [#407](https://github.com/rubocop/rubocop-performance/issues/407): Make `Performance/DoubleStartEndWith` aware of safe navigation. ([@earlopain][])

## 1.21.1 (2024-06-16)

### Bug fixes

* [#452](https://github.com/rubocop/rubocop-performance/pull/452): Fix an error for `Performance/RedundantEqualityComparisonBlock` when the block is empty. ([@earlopain][])

## 1.21.0 (2024-03-30)

### New features

* [#446](https://github.com/rubocop/rubocop-performance/pull/446): Support Prism as a Ruby parser (experimental). ([@koic][])

### Bug fixes

* [#437](https://github.com/rubocop/rubocop-performance/issues/437): Fix a false positive for `Performance/ChainArrayAllocation` when using `select` with block argument after `select`. ([@koic][])
* [#448](https://github.com/rubocop/rubocop-performance/issues/448): Fix a false positive for `Performance/RedundantBlockCall` when using `block.call` with block argument. ([@koic][])

### Changes

* [#240](https://github.com/rubocop/rubocop-performance/issues/240): Disable `Performance/Casecmp` cop by default. ([@parkerfinch][])

## 1.20.2 (2024-01-08)

### Bug fixes

* [#425](https://github.com/rubocop/rubocop-performance/issues/425): Fix a false positive for `Performance/StringIdentifierArgument` when using string interpolation with methods that don't support symbols with `::` inside them. ([@earlopain][])

## 1.20.1 (2023-12-25)

### Bug fixes

* [#428](https://github.com/rubocop/rubocop-performance/pull/428): Fix false negatives for `Performance/StringIdentifierArgument` when using multiple string arguments. ([@koic][])

## 1.20.0 (2023-12-16)

### New features

* [#384](https://github.com/rubocop/rubocop-performance/issues/384): Support optimized `String#dup` for `Performance/UnfreezeString` when Ruby 3.3+. ([@koic][])

### Bug fixes

* [#374](https://github.com/rubocop/rubocop-performance/issues/374): Fix an error for `Performance/MapMethodChain` when using `map` method chain without receiver. ([@koic][])
* [#386](https://


ck_res_samples,
                mid_block_additional_residual=mid_block_res_sample,
            )
            sample, _ = scheduler.step(
                model_output=noise_pred, timestep=t, sample=sample
            )
val_source = val_source.permute(0, 2, 3, 1).detach()
val_images = val_images.permute(0, 2, 3, 1).detach()
sample = sample.permute(0, 2, 3, 1).detach()
# plt.subplots(num_samples, 3, figsize=(6, 8))
# for k in range(num_samples):
#     plt.subplot(num_samples, 3, k * 3 + 1)
#     plt.imshow(val_source[k, 0, ...].cpu(), vmin=0, vmax=1, cmap="gray")
#     plt.axis("off")
#     if k == 0:
#         plt.title("Conditioning mask")
#     plt.subplot(num_samples, 3, k * 3 + 2)
#     plt.imshow(val_images[k, 0, ...].cpu(), vmin=0, vmax=1, cmap="gray")
#     plt.axis("off")
#     if k == 0:
#         plt.title("Actual val image")
#     plt.subplot(num_samples, 3, k * 3 + 3)
#     plt.imshow(sample[k, 0, ...].cpu(), vmin=0, vmax=1, cmap="gray")
#     plt.axis("off")
#     if k == 0:
#         plt.title("Sampled image")
# plt.tight_layout()
# plt.show()
val_source = np.clip(val_source.cpu().numpy() * 255, 0, 255)
val_source = val_source.astype(np.uint8)

val_images = np.clip(val_images.cpu().numpy() * 255, 0, 255)
val_images = val_images.astype(np.uint8)

sample = np.clip(sample.cpu().numpy() * 255, 0, 255)
sample = sample.astype(np.uint8)

for k in range(num_samples):
    Image.fromarray(val_source[k]).save(os.path.join(output_dir, "cn_val_source_{}.png".format(k)))
    Image.fromarray(val_images[k]).save(os.path.join(output_dir, "cn_val_image_{}.png".format(k)))
    Image.fromarray(sample[k]).save(os.path.join(output_dir, "cn_val_sample_{}.png".format(k)))


y:ctor( ... )
    assert(self.fly, "必须实现飞行接口")
end

-- 具体飞行策略

-- 振翅高飞
local FlyWithWin = class(FlyStrategy)
function FlyWithWin:fly( ... )
    print("振翅高飞")
end
local flyWithWin = new(FlyWithWin)

-- 正常鸭
local NormalDuck = class(Duck)
function NormalDuck:ctor( ... )
    self:setFlyStrategy(flyWithWin)
end
function NormalDuck:display( ... )
    print("我是正常鸭")
end

-- 测试
local normalDuck = new(NormalDuck)
normalDuck:display()
normalDuck:fly()

-- 不会飞（也是一种飞行策略）
local FlyNoWay = class(FlyStrategy)
function FlyWithWin:fly( ... )
    print("不会飞")
end
local flyNoWay = new(FlyNoWay)

-- 橡皮鸭
local RubberDuck = class(Duck)
function RubberDuck:ctor( ... )
    self:setFlyStrategy(flyNoWay)
end
function RubberDuck:display( ... )
    print("我是橡皮鸭")
end

-- 测试
local rubberDuck = new(RubberDuck)
rubberDuck:display()
rubberDuck:fly()

-- 坐火箭飞
local FlyWithRocket = class(FlyStrategy)
function FlyWithRocket:fly( ... )
    print("坐火箭飞")
end
local flyWithRocket = new(FlyWithRocket)

-- 太空鸭
local SpaceDuck = class(Duck)
function SpaceDuck:ctor( ... )
    self:setFlyStrategy(flyWithRocket)
end
function SpaceDuck:display( ... )
    print("我是正常鸭")
end

-- 测试
local spaceDuck = new(SpaceDuck)
spaceDuck:display()
spaceDuck:fly()

-- 对于鸭子超类，没有在其中直接定义fly方法，或者fly接口的原因
-- 不直接定义fly方法，不是所有的鸭子都会飞，对于不会飞的鸭子需要覆盖该方法，但是可能会由于某些原因忘记覆盖
-- 不直接定义fly接口，这样的话，所有的子类都必须要实现该接口，
-- 而且代码无法复用，重复代码多，比如同一个飞行策略，在具有相同的策略的子类中都要写一遍

-- 采用策略模式的好处，灵活不同的策略可以有不同的实现，当某些子类有共同的飞行策略，还可以直接复用该策略


 b b b a 3 a .
            . . . a a a a a a a a a a a a .
            . . . f a 1 a a a a a a d a f .
            . . . f a 1 1 a a a a d d a f .
            . . . f f a a a a a a a a f f .
            . . . . f f . . . . . . f f . .
            `, SpriteKind.CAR)
        tiles.placeOnRandomTile(theCar, assets.tile`myTile1`)
        theCar.vy = 0 - carSpeed
        sprites.setDataBoolean(theCar, "movingDown", false)
    }
    if (tiles.tileIsWall(tiles.locationOfSprite(theCar))) {
        theCar.destroy()
    }
    sprites.setDataBoolean(theCar, "turnRight", Math.percentChance(50))
})
game.onUpdateInterval(500, function () {
    for (let value2 of sprites.allOfKind(SpriteKind.MOVINGCAR)) {
        if (value2.tileKindAt(TileDirection.Center, assets.tile`myTile2`) || (value2.tileKindAt(TileDirection.Center, assets.tile`myTile3`) || (value2.tileKindAt(TileDirection.Center, assets.tile`myTile4`) || value2.tileKindAt(TileDirection.Center, assets.tile`myTile5`)))) {
            value2.destroy()
            info.changeScoreBy(1)
        }
    }
})
game.onUpdateInterval(500, function () {
    for (let value3 of sprites.allOfKind(SpriteKind.CAR)) {
        if (sprites.readDataBoolean(value3, "blink")) {
            if (sprites.readDataBoolean(value3, "turnRight")) {
                value3.image.replace(5, 13)
                sprites.setDataBoolean(value3, "blink", false)
            } else {
                value3.image.replace(5, 1)
                sprites.setDataBoolean(value3, "blink", false)
            }
        } else {
            if (sprites.readDataBoolean(value3, "turnRight")) {
                value3.image.replace(13, 5)
                sprites.setDataBoolean(value3, "blink", true)
            } else {
                value3.image.replace(1, 5)
                sprites.setDataBoolean(value3, "blink", true)
            }
        }
        if (value3.vy == 0 && !(tiles.tileIsWall(tiles.locationOfSprite(value3)))) {
            if (sprites.readDataBoolean(value3, "movingDown")) {
                value3.vy = carSpeed
            } else {
                value3.vy = 0 - carSpeed
            }
        }
    }
})
import { keys } from '../../util/keys';
import { SCREEN_DIMENSIONS } from '../../util/screen';
import { CannonSceneConfig, SceneState } from './cannon_scene_config';

export class CannonTurret {
  private sprite: Phaser.GameObjects.Sprite;
  private blastSound: Phaser.Sound.BaseSound;

  private alreadyFired = false;

  create(scene: Phaser.Scene, sc: CannonSceneConfig): CannonTurret {
    this.sprite = scene.add.sprite(
      sc.cannonPivot.x,
      sc.cannonPivot.y,
      keys.sprites.cannonTurret,
    );

    this.blastSound = scene.sound.add


    tst_eval((x0^3) - 2*x0 + 1, 0, rational(2), 1, rational(2), 2, rational(3), rational(5));
    tst_eval((x0^3) - 2*x0 + 1, 0, rational(-2), 1, rational(2), 2, rational(3), rational(-3));
    tst_eval((x0^4) - 2*x0 + x1 + 1, 0, rational(-2), 1, rational(10), 2, rational(3), rational(31));
    tst_eval((x0^4) - 2*x0 + ((x0^3) + 1)*x1 + 1, 0, rational(-2), 1, rational(10), 2, rational(3), rational(-49));
    tst_eval(((x0^4) - 2*x0)*(x1^2) + ((x0^3) + 1)*x1 + (x0^2) + 1, 0, rational(-2), 1, rational(10), 2, rational(3), rational(1935));
    tst_eval(((x0^4) - 2*x0)*(x1^2)*(x2^3) + ((x0^3) + 1)*x1 + (x0^2) + 1, 0, rational(-2), 1, rational(10), 2, rational(0), rational(-65));
    tst_eval(((x0^4) - 2*x0)*((x1^2) + 1)*(x2^3) + ((x0^3) + 1)*x1 + (x0^2) + 1, 0, rational(-2), 1, rational(10), 2, rational(1, 2), rational(375, 2));
    tst_eval(x0*x1*x2, 0, rational(2), 1, rational(3), 2, rational(1), rational(6));
    tst_eval(x0*x1*x2 + 1, 0, rational(2), 1, rational(3), 2, rational(1), rational(7));
    polynomial_ref one(m);
    one = x0 - x0 + 1;
    tst_eval(one, 0, rational(2), 1, rational(3), 2, rational(1), rational(1));
    tst_eval(x0*(x1^2)*x2 + 1, 0, rational(2), 1, rational(3), 2, rational(1), rational(19));
    tst_eval(x0*(x1^2)*x2 + x1 + 1, 0, rational(2), 1, rational(3), 2, rational(1), rational(22));
    tst_eval(x0*(x1^2)*x2 + x1 + 1 + (x2^2)*(2*x1 - 1), 0, rational(2), 1, rational(3), 2, rational(1), rational(27));
    tst_eval((x0^5) + 1, 0, rational(2), 1, rational(3), 2, rational(1), rational(33));
    tst_eval((x0^5) + x0*x1 + 1, 0, rational(2), 1, rational(1), 2, rational(5), rational(35));
    tst_eval((x1^5) + x0*x1 + 1, 0, rational(2), 1, rational(1), 2, rational(5), rational(4));
    tst_eval((x1^5) + x0*(x1^2) + 1, 0, rational(2), 1, rational(-2), 2, rational(5), rational(-23));
}

static void tst_mk_unique() {
    polynomial::numeral_manager nm;
    reslimit rl; polynomial::manager m(rl, nm);
    polynomial_ref x0(m);
    polynomial_ref x1(m);
    polynomial_ref x2(m);
    x0 = m.mk_polynomial(m.mk_var());
    x1 = m.mk_polynomial(m.mk_var());
    x2 = m.mk_polynomial(m.mk_var())


Dot));
}

#[test]
fn test_regex_literal() {
    let mut lexer = Lexer::new("/(?:)/");
    lexer.lex().expect("failed to lex");
    assert_eq!(
        lexer.tokens[0].data,
        TokenData::RegularExpressionLiteral("(?:)".to_string(), "".to_string())
    );
}

#[test]
fn test_regex_literal_flags() {
    let mut lexer = Lexer::new(r"/\/[^\/]*\/*/gmi");
    lexer.lex().expect("failed to lex");
    assert_eq!(
        lexer.tokens[0].data,
        TokenData::RegularExpressionLiteral("\\/[^\\/]*\\/*".to_string(), "gmi".to_string())
    );
}

#[test]
fn test_addition_no_spaces() {
    let mut lexer = Lexer::new("1+1");
    lexer.lex().expect("failed to lex");
    assert_eq!(lexer.tokens[0].data, TokenData::NumericLiteral(1.0));
    assert_eq!(lexer.tokens[1].data, TokenData::Punctuator(Punctuator::Add));
    assert_eq!(lexer.tokens[2].data, TokenData::NumericLiteral(1.0));
}

#[test]
fn test_addition_no_spaces_left_side() {
    let mut lexer = Lexer::new("1+ 1");
    lexer.lex().expect("failed to lex");
    assert_eq!(lexer.tokens[0].data, TokenData::NumericLiteral(1.0));
    assert_eq!(lexer.tokens[1].data, TokenData::Punctuator(Punctuator::Add));
    assert_eq!(lexer.tokens[2].data, TokenData::NumericLiteral(1.0));
}

#[test]
fn test_addition_no_spaces_right_side() {
    let mut lexer = Lexer::new("1 +1");
    lexer.lex().expect("failed to lex");
    assert_eq!(lexer.tokens[0].data, TokenData::NumericLiteral(1.0));
    assert_eq!(lexer.tokens[1].data, TokenData::Punctuator(Punctuator::Add));
    assert_eq!(lexer.tokens[2].data, TokenData::NumericLiteral(1.0));
}

#[test]
fn test_addition_no_spaces_e_number_left_side() {
    let mut lexer = Lexer::new("1e2+ 1");
    lexer.lex().expect("failed to lex");
    assert_eq!(lexer.tokens[0].data, TokenData::NumericLiteral(100.0));
    assert_eq!(lexer.tokens[1].data, TokenData::Punctuator(Punctuator::Add));
    assert_eq!(lexer.tokens[2].data, TokenData::NumericLiteral(1.0));
}

#[test]
fn test_addition_no_spaces_e_number_right_side() {
    let mut lexer = Lexer::new("1 +1e3");
    lexer.lex().expect("failed to lex");
    assert_eq!(lexer.tokens[0].data, TokenData::NumericLiteral(1.0));
    assert_eq!(lexer.tokens[1].data, TokenData::Punctuator(Punctuator::Add));
    assert_eq!(lexer.tokens[2].data, TokenData::NumericLiteral(1000.0));
}

#[test]
fn test_addition_no_spaces_e_number() {
    let mut lexer = Lexer::new("1e3+1e11");
    lexer.lex().expect("failed to lex");
    assert_eq!(lexer.tokens[0].data, TokenData::NumericLiteral(1000.0));
    assert_eq!(lexer.tokens[1].data, TokenData::Punctuator(Punctuator::Add));
    assert_eq!(
        lexer.tokens[2].data,
        TokenData::NumericLiteral(100_000_000_000.0)
    );
}
<filename>src/main.rs
use std::io;
use std::io::Write;
use std::rc::Rc;

mod vec3;
mod color;
mod camera;
mod ray;
mod hittable;
mod sphere;
mod hi


winapi::um::d2d1svg::*;

#[derive(Clone, Copy, PartialEq, Eq, Debug)]
#[repr(u32)]
pub enum SVGAspectAlign {
    None = D2D1_SVG_ASPECT_ALIGN_NONE,
    XMinYMin = D2D1_SVG_ASPECT_ALIGN_X_MIN_Y_MIN,
    XMidYMin = D2D1_SVG_ASPECT_ALIGN_X_MID_Y_MIN,
    XMaxYMin = D2D1_SVG_ASPECT_ALIGN_X_MAX_Y_MIN,
    XMinYMid = D2D1_SVG_ASPECT_ALIGN_X_MIN_Y_MID,
    XMidYMid = D2D1_SVG_ASPECT_ALIGN_X_MID_Y_MID,
    XMaxYMid = D2D1_SVG_ASPECT_ALIGN_X_MAX_Y_MID,
    XMinYMax = D2D1_SVG_ASPECT_ALIGN_X_MIN_Y_MAX,
    XMidYMax = D2D1_SVG_ASPECT_ALIGN_X_MID_Y_MAX,
    XMaxYMax = D2D1_SVG_ASPECT_ALIGN_X_MAX_Y_MAX,
}

#[derive(Clone, Copy, PartialEq, Eq, Debug)]
#[repr(u32)]
pub enum SVGAspectScaling {
    Meet = D2D1_SVG_ASPECT_SCALING_MEET,
    Slice = D2D1_SVG_ASPECT_SCALING_SLICE,
}

#[derive(Clone, Copy, PartialEq, Eq, Debug)]
#[repr(u32)]
pub enum SVGAttributePODType {
    Float = D2D1_SVG_ATTRIBUTE_POD_TYPE_FLOAT,
    Color = D2D1_SVG_ATTRIBUTE_POD_TYPE_COLOR,
    FillMode = D2D1_SVG_ATTRIBUTE_POD_TYPE_FILL_MODE,
    Display = D2D1_SVG_ATTRIBUTE_POD_TYPE_DISPLAY,
    Overflow = D2D1_SVG_ATTRIBUTE_POD_TYPE_OVERFLOW,
    LineCap = D2D1_SVG_ATTRIBUTE_POD_TYPE_LINE_CAP,
    LineJoin = D2D1_SVG_ATTRIBUTE_POD_TYPE_LINE_JOIN,
    Visibility = D2D1_SVG_ATTRIBUTE_POD_TYPE_VISIBILITY,
    Matrix = D2D1_SVG_ATTRIBUTE_POD_TYPE_MATRIX,
    UnitType = D2D1_SVG_ATTRIBUTE_POD_TYPE_UNIT_TYPE,
    ExtendMode = D2D1_SVG_ATTRIBUTE_POD_TYPE_EXTEND_MODE,
    PreserveAspectRatio = D2D1_SVG_ATTRIBUTE_POD_TYPE_PRESERVE_ASPECT_RATIO,
    ViewBox = D2D1_SVG_ATTRIBUTE_POD_TYPE_VIEWBOX,
    Length = D2D1_SVG_ATTRIBUTE_POD_TYPE_LENGTH,
}

#[derive(Clone, Copy, PartialEq, Eq, Debug)]
#[repr(u32)]
pub enum SVGAttributeStringType {
    SVG = D2D1_SVG_ATTRIBUTE_STRING_TYPE_SVG,
    ID = D2D1_SVG_ATTRIBUTE_STRING_TYPE_ID,
}

#[derive(Clone, Copy, PartialEq, Eq, Debug)]
#[repr(u32)]
pub enum SVGDisplay {
    Inline = D2D1_SVG_DISPLAY_INLINE,
    None = D2D1_SVG_DISPLAY_NONE,
}

#[derive(Clone, Copy, PartialEq, Eq, Debug)]
#[repr(u32)]
pub enum SVGLengthUnits {
    Number = D2D1_SVG_LENGTH_UNITS_NUMBER,
    Percentage = D2D1_SVG_LENGTH_UNITS_PERCENTAGE,
}

#[derive(Clone, Copy, PartialEq, Eq, Debug)]
#[repr(u32)]
pub enum SVGLineCap {
    Butt = D2D1_SVG_LINE_CAP_BUTT,
    Square = D2D1_SVG_LINE_CAP_SQUARE,
    Round = D2D1_SVG_LINE_CAP_ROUND,
}

#[derive(Clone, Copy, PartialEq, Eq, Debug)]
#[repr(u32)]
pub enum SVGLineJoin {
    Bevel = D2D1_SVG_LINE_JOIN_BEVEL,
    Miter = D2D1_SVG_LINE_JOIN_MITER,
    Round = D2D1_SVG_LINE_JOIN_ROUND,
}


 regarding copyright ownership.
 *  The ASF licenses this file to You under the Apache License, Version 2.0
 *  (the "License"); you may not use this file except in compliance with
 *  the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 *  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.
 */

/**
* @author Alexander Y. Kleymenov
* @version $Revision$
*/

package org.apache.harmony.security.x509;

import java.io.IOException;
import org.apache.harmony.security.asn1.ASN1Explicit;
import org.apache.harmony.security.asn1.ASN1Implicit;
import org.apache.harmony.security.asn1.ASN1Sequence;
import org.apache.harmony.security.asn1.ASN1Type;
import org.apache.harmony.security.asn1.BerInputStream;

/**
 * The class encapsulates the ASN.1 DER encoding/decoding work
 * with the DistributionPoint structure which is the part of X.509 CRL
 * (as specified in RFC 3280 -
 *  Internet X.509 Public Key Infrastructure.
 *  Certificate and Certificate Revocation List (CRL) Profile.
 *  http://www.ietf.org/rfc/rfc3280.txt):
 *
 * <pre>
 *  CRLDistributionPoints ::= SEQUENCE SIZE (1..MAX) OF DistributionPoint
 *
 *  DistributionPoint ::= SEQUENCE {
 *        distributionPoint       [0]     DistributionPointName OPTIONAL,
 *        reasons                 [1]     ReasonFlags OPTIONAL,
 *        cRLIssuer               [2]     GeneralNames OPTIONAL
 *  }
 *
 *  DistributionPointName ::= CHOICE {
 *        fullName                [0]     GeneralNames,
 *        nameRelativeToCRLIssuer [1]     RelativeDistinguishedName
 *  }
 *
 *  ReasonFlags ::= BIT STRING {
 *        unused                  (0),
 *        keyCompromise           (1),
 *        cACompromise            (2),
 *        affiliationChanged      (3),
 *        superseded              (4),
 *        cessationOfOperation    (5),
 *        certificateHold         (6),
 *        privilegeWithdrawn      (7),
 *        aACompromise            (8)
 *  }
 * </pre>
 */
public final class DistributionPoint {
    private final DistributionPointName distributionPoint;
    private final ReasonFlags reasons;
    private final GeneralNames cRLIssuer;

    public DistributionPoint(DistributionPointName distributionPoint,
            ReasonFlags reasons, GeneralNames cRLIssuer) {
        if ((reasons != null) && (distributionPoint == null) && (cRLIssuer == null)) {
            throw new IllegalArgumentException("DistributionPoint MUST NOT consist of only the reasons field");
        }
        this.distributionPoint = distributionPoint;
        this.reasons = reasons;
        this.cRLIssuer = cRLIssuer;
    }

    public void dumpValue(StringBuilder sb, String prefix) {
        sb.append(prefix);
        sb.append("Distribution Point: [\n");
        if (distributionPoint != null) {
            distributionPoint.dumpValue(sb, prefix + "  ");
        }
        if (reasons != null) {
            reasons.dumpValue(sb, prefix + "  ");
        }
        if (cRLIssuer != null) {
            sb.append(prefix);
            sb.append("  CRL Issuer: [\n");
            cRLIssuer.dumpValue(sb, prefix + "    ");
            sb.append(prefix);
            sb.append("  ]\n");
        }
        sb.append(prefix);
        sb.append("]\n");
    }

    /**
     * Custom X.509 decoder.
     */
    public static final A


殺了一些人。"

L.aw_knf3_title = "開膛手傑克"
L.aw_knf3_text = "在地上撿到 {num} 把匕首，並使用它們。"

L.aw_knf4_title = "我是赤屍藏人"
L.aw_knf4_text = "通過刀子殺死了 {num} 個人。我只是個醫生。"

L.aw_flg1_title = "玩火少年"
L.aw_flg1_text = "用燃燒彈導致 {num} 人死亡。"

L.aw_flg2_title = "汽油加上番仔火"
L.aw_flg2_text = "使 {num} 名玩家葬身於火海。"

L.aw_hug1_title = "子彈多喔！"
L.aw_hug1_text = "用M249機槍將子彈送到 {num} 名玩家身上。"

L.aw_hug2_title = "耐心大叔"
L.aw_hug2_text = "從未放下M249機槍的扳機，他殺戮了 {num} 名玩家。"

L.aw_msx1_title = "啪啪啪"
L.aw_msx1_text = "用M16步槍射殺了 {num} 名玩家。"

L.aw_msx2_title = "中距離瘋子"
L.aw_msx2_text = "了解如何用他手中的M16，射殺了敵人。共有 {num} 名不幸的亡魂。"

L.aw_tkl1_title = "拍謝"
L.aw_tkl1_text = "瞄準自己的隊友，並不小心扣下扳機。"

L.aw_tkl2_title = "拍謝拍謝"
L.aw_tkl2_text = "認為自己抓到了兩次叛徒，但兩次都錯了！"

L.aw_tkl3_title = "小心業值！"
L.aw_tkl3_text = "殺死兩個同伴已不能滿足他，三個才是他的最終目標！"

L.aw_tkl4_title = "專業賣同隊！"
L.aw_tkl4_text = "殺了所有同伴，我的天啊！砰砰砰──"

L.aw_tkl5_title = "最佳主角"
L.aw_tkl5_text = "扮演的是瘋子，真的，因為他殺了大多數的同伴。"

L.aw_tkl6_title = "莫非閣下是...低能兒？"
L.aw_tkl6_text = "弄不清他屬於哪一隊，並殺死了半數以上的隊友。"

L.aw_tkl7_title = "園丁"
L.aw_tkl7_text = "好好保護著自己的草坪，並殺死了四分之一以上的隊友。"

L.aw_brn1_title = "像小汝做菜一般"
L.aw_brn1_text = "使用燃燒彈點燃數個玩家，將他們炸得很脆！"

L.aw_brn2_title = "火化官"
L.aw_brn2_text = "將每一具被他殺死的受害者屍體燃燒乾淨。"

L.aw_brn3_title = "好想噴火！"
L.aw_brn3_text = "「燒死你們！」，


 which is not possible using LALRPOP's generated lexer. To see why, consider the
//! following string:
//!
//! ```text
//! "hello, I have 1 + ${ {a = "40"}.a } + 1 bananas."
//! ```
//!
//! Once the `${` token is encountered, the lexer has to switch back to lexing expressions as
//! usual. But at the end of the interpolated expression, `+ 1 bananas.` needs to be parsed as a
//! string again, and not as normal program tokens. Since the interpolated expression is arbitrary,
//! it can contains nested `{` and `}` (as here, with records) and strings which themselves have
//! interpolated expression, and so on.
//!
//! This is typically not lexable using only regular expressions. To handle this, we use a *modal*
//! lexer. As hinted by the name, a modal lexer have several modes in which the same tokens can be
//! parsed differently. Ours can be in *normal* mode or in *string* mode.
//!
//! It also maintains a stack of brace counters, required inside an interpolated expression to
//! decide if a closing brace `}` belongs to the expression or is actually the closing brace of the
//! interpolated expression, indicating that we should switch back to string mode.
//!
//! When entering a string, the `Str` mode is entered. When a `${` is encountered in a string,
//! starting an interpolated expression, the normal mode is pushed. At each starting `{` in normal
//! mode, the brace counter is incremented. At each closing '}', it is decremented. When it reaches
//! `0`, this is the end of the current interpolated expressions, and we leave the normal mode and
//! go back to string mode. In our example, this is the second `}`: at this point, the lexer knows
//! that the coming characters must be lexed as string tokens, and not as normal tokens.
use logos::Logos;
use std::ops::Range;

/// The tokens in normal mode.
#[derive(Logos, Debug, PartialEq, Clone)]
pub enum NormalToken<'input> {
    #[regex("[ \r\t\n]+", logos::skip)]
    #[error]
    Error,

    #[regex("_?[a-zA-Z][_a-zA-Z0-9]*")]
    Identifier(&'input str),
    #[regex("[0-9]*\\.?[0-9]+", |lex| lex.slice().parse())]
    NumLiteral(f64),

    #[token("Dyn")]
    Dyn,
    #[token("Num")]
    Num,
    #[token("Bool")]
    Bool,
    #[token("Str")]
    Str,
    #[token("List")]
    List,

    #[token("if")]
    If,
    #[token("then")]
    Then,
    #[token("else")]
    Else,
    #[token("forall")]
    Forall,
    #[token("in")]
    In,
    #[token("let")]
    Let,
    #[token("switch")]
    Switch,

    #[token("null")]
    Null,
    #[token("true")]
    True,
    #[token("false")]
    False,

    #[token(",")]
    Comma,
    #[token(":")]
    Colon,
    #[token("$")]
    Dollar,
    #[token("=")]
    Equals,
    #[token("!=")]
    NotEquals,
    #[token("&")]
    Ampersand,
    #[token(".")]
    Dot,
    #[token("$[")]
    DollarBracket,
    #[token("\"")]
    DoubleQuote,


et isn't invulnerable
		if (target.isInvul())
		{
			// However EffectInvincible requires to check GMs specially
			if ((target instanceof L2PcInstance && ((L2PcInstance) target).isGM()) || (target instanceof L2Summon && ((L2Summon) target).getOwner().isGM()))
			{
				return false;
			}
		}

		// Check if the target isn't a Folk or a Door
		if (target instanceof L2FolkInstance || target instanceof L2DoorInstance)
		{
			return false;
		}

		// Check if the target isn't dead, is in the Aggro range and is at the same height
		if (target.isAlikeDead() || !me.isInsideRadius(target, me.getAggroRange(), false, false) || Math.abs(actor.getZ() - target.getZ()) > 300)
		{
			return false;
		}

		// Check if the target is a L2PcInstance
		if (target instanceof L2PcInstance)
		{
			// Don't take the aggro if the GM has the access level below or equal to GM_DONT_TAKE_AGGRO
			// Check if the AI isn't a Raid Boss and the target isn't in silent move mode
			if ((((L2PcInstance) target).isGM() && ((L2PcInstance) target).getAccessLevel().canTakeAggro()) || (!(me instanceof L2RaidBossInstance) && ((L2PcInstance) target).isSilentMoving()))
			{
				return false;
			}

			// if in offline mode
			// Check if player is an ally
			// Comparing String isnt good idea!
			if (((L2PcInstance) target).isInOfflineMode() || (me.getFactionId() != null && me.getFactionId().equals("varka") && ((L2PcInstance) target).isAlliedWithVarka()))
			{
				return false;
			}

			if (me.getFactionId() != null && me.getFactionId().equals("ketra") && ((L2PcInstance) target).isAlliedWithKetra())
			{
				return false;
			}

			// check if the target is within the grace period for JUST getting up from fake death
			if (((L2PcInstance) target).isRecentFakeDeath())
			{
				return false;
			}

			// check player is in away mod
			if (((L2PcInstance) target).isAway() && !Config.AWAY_PLAYER_TAKE_AGGRO)
			{
				return false;
			}

			if (target.isInParty() && target.getParty().isInDimensionalRift())
			{
				final byte riftType = target.getParty().getDimensionalRift().getType();
				final byte riftRoom = target.getParty().getDimensionalRift().getCurrentRoom();

				if (me instanceof L2RiftInvaderInstance && !DimensionalRiftManager.getInstance().getRoom(riftType, riftRoom).checkIfInZone(me.getX(), me.getY(), me.getZ()))
				{
					return false;
				}
			}
		}

		// Check if the target is a L2Summon
		if (target instanceof L2Summon)
		{
			final L2PcInstance owner = ((L2Summon) target).getOwner();
			if (owner != null)
			{
				// Don't take the aggro if the GM has the access level below or equal to GM_DONT_TAKE_AGGRO
				if (owner.isGM() && (owner.isInvul() || !owner.getAccessLevel().canTakeAggro()))
				{
					return false;
				}
				// Check if player is an ally (comparing mem addr)
				if (me.getFactionId() != null && me.getFactionId() == "varka" && owner.isAlliedWithVarka())
				{
					return false;
				}
				if (me.getFactionId() != null && me.getFactionId() == "ketra" && owner.isAll


(1983)(Activision)(US)[k-file].png",
  "Named_Snaps/MegaMania (1983)(Activision)(US).png",
  "Named_Snaps/Megablast (1992)(Torsten Karwoth)(DE)(en)(PD)[128K samples].png",
  "Named_Snaps/Megablast (1992)(Torsten Karwoth)(DE)(en)(PD)[128k samples][k-file].png",
  "Named_Snaps/Megablast (1992)(Torsten Karwoth)(DE)(en)(PD)[128k samples].png",
  "Named_Snaps/Megablast (1992)(Torsten Karwoth)(DE)(en)(PD)[h A.P.C.][64K].png",
  "Named_Snaps/Megablast (1992)(Torsten Karwoth)(DE)(en)(PD)[h A.P.C.][64k].png",
  "Named_Snaps/Megablast (1992)(Torsten Karwoth)(DE)(en)(PD)[h A.P.C.][Req 64k][k-file].png",
  "Named_Snaps/Megalegs (1982)(Megasoft)(US)[a][k-file].png",
  "Named_Snaps/Megalegs (1982)(Megasoft)(US)[a].png",
  "Named_Snaps/Megalegs (1982)(Megasoft)(US)[k-file].png",
  "Named_Snaps/Megalegs (1982)(Megasoft)(US).png",
  "Named_Snaps/Megamania (1983)(Activision)[!][CZ-003-004].png",
  "Named_Snaps/Melt-Down (1982)(APX)(US)[a][k-file].png",
  "Named_Snaps/Melt-Down (1982)(APX)(US)[a].png",
  "Named_Snaps/Melt-Down (1982)(APX)(US)[k-file].png",
  "Named_Snaps/Melt-Down (1982)(APX)(US).png",
  "Named_Snaps/Meltdown (1982)(Cosmi)(US)[OS-B].png",
  "Named_Snaps/Memory Manor (1984)(Fisher-Price)(US)[k-file].png",
  "Named_Snaps/Memory Manor (1984)(Fisher-Price)(US).png",
  "Named_Snaps/Memory Match (1981)(APX)(US)[bas2boot].png",
  "Named_Snaps/Mengcop (1983)(Ed Wegryn)[k-file].png",
  "Named_Snaps/Mengcop (1983)(Ed Wegryn).png",
  "Named_Snaps/Mental Age (1994)(ZGBowski, Daniel)(PL)(en)(preview)[k-file].png",
  "Named_Snaps/Mental Age (1994)(Zukowski, Daniel)(PL)(en)(preview).png",
  "Named_Snaps/Mercenary - Escape From Targ (1985)(Novagen Software)(GB)[cr Rob.C].png",
  "Named_Snaps/Mercenary - Escape From Targ (1985)(Novagen Software)(GB)[cr Wzab][k-file].png",
  "Named_Snaps/Mercenary - Escape From Targ (1985)(Novagen Software)(GB)[cr Wzab].png",
  "Named_Snaps/Mercenary - Escape From Targ (1985)(Novagen Software)(GB)[k-file].png",
  "Named_Snaps/Mercenary - Escape From Targ (1985)(Novagen Software)(GB).png",
  "Named_Snaps/Mercenary - The Second City (1986)(Novagen Software)(GB)[b].png",
  "Named_Snaps/Merry Christmas (19xx)(-)[PCS][k-file].png",
  "Named_Snaps/Merry Christmas (19xx)(-)[PCS].png",
  "Named_Snaps/Meteor (1984)(Russell Payne)[k-file].png",
  "Named_Snaps/Meteor (1984)(Russell Payne).png",
  "Named_Snaps/Meteor (198x)(Germ-Soft)[p].png",
  "Named_Snaps/Meteor (19xx)(Germ-Soft)(de)[k-


用于列表页的更新，替换为字符串 r，用于 .ts / .js

__MOBILEREVIEW__ 用于定义手机端重新加载视图查询名称，一般用于列表页的更新，替换为字符串 m，用于 .ts / .js

__VIEWONLY__ 用于配合 AutoCSer.Net.Http.HeaderFlag.IsReView 在通过 AJAX 重新加载页面时不覆盖客户端数据，替换为字符串 ViewOnly，用于 .ts / .js

参考示例 AutoCSer\AutoCSer\Js\base.page.ts

WEB 视图页面服务端通过 HeaderFlag 属性访问它们

        __LOADPAGECACHE__ 用于定义第一次加载页面缓存名称，替换为字符串 l，用于 .ts / .js

这个预定义符号用于通知服务端当前请求用于网站重启以后第一次加载页面缓存，服务端可能不需要当成真实请求来处理，可能不应该修改某些访问状态。

        __AJAX__ 用于定义默认 AJAX 调用名称，替换为字符串 /Ajax，用于 .ts / .js

__AJAXCALL__ 用于定义 AJAX 调用函数映射名称，替换为字符串 n，用于 .ts / .js

__CALLBACK__ 用于定义 AJAX 回调函数名称，替换为字符串 c，用于 .ts / .js

AJAX 调用函数客户端调用处理依赖于这些预定义符号

参考示例 AutoCSer\AutoCSer\Js\base.page.ts

__AJAXRETURN__ 用于定义 AJAX 调用返回值属性名称，替换为字符串 Return，用于 .ts / .js

        __JSON__ 用于定义 JSON 查询名称，替换为字符串 j，用于 .html / .ts / .js

__XML__ 用于定义 XML 查询名称，替换为字符串 x，用于 .html / .ts / .js

参考示例 AutoCSer\AutoCSer\Js\base.page.ts

<!DOCTYPE html>

    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name


import os

class Node:
    def __init__(self, data):
        self.data = data  # 节点的数据域
        self.lchild = None  # 节点的左孩子
        self.rchild = None  # 节点的右孩子

    def __repr__(self):
        return 'Node({!r})'.format(self.data)

class BinaryTree:
    def __init__(self, root=None):
        self.root = root
        self.pickle_str = ''  # 序列化后的字符串

    def add(self, data):
        '''添加节点：广度优先，使用队列实现（这种方式是创建了 "完全二叉树"，如果想创建普通二叉树就不行）'''
        node = Node(data)
        # 如果树还是空树，则把该节点添加为根节点
        if self.root is None:
            self.root = node
        else:
            queue = []  # 模拟队列
            queue.append(self.root)  # 首先把根节点加入队列
            while queue:
                cur = queue.pop(0)  # 弹出队列中的第1个元素（即最先加入队列的元素，先进先出）
                if cur.lchild is None:
                    cur.lchild = node
                    return
                else:
                    # 如果弹出的节点的左孩子不为空，则把它的左孩子加入队列，后面继续判断左孩子
                    queue.append(cur.lchild)

                if cur.rchild is None:
                    cur.rchild = node
                    return
                else:
                    # 如果弹出的节点的右孩子不为空，则把它的右孩子加入队列，后面继续判断右孩子
                    queue.append(cur.rchild)

    def pre_order_traversal(self, cur):
        '''树的遍历：深度优先，使用递归实现
        前序遍历: 根、左、右
        '''
        if cur is None:  # 递归的终止条件
            return

        print(cur, end=' ')
        self.pre_order_traversal(cur.lchild)  # 如果当前节点(叶子节点)没有左孩子，则传入的是None，会终止递归
        self.pre_order_traversal(cur.rchild)

    def pickling(self):
        '''序列化：内存中的二叉树数据结构 --> 文件中的字符串
        方式：
        1. 根据先序遍历序列化
        2. 根据中序遍历序列化
        3. 根据后序遍历序列化
        4. 根据广度优先遍历(按层)序列化

        这里使用先序遍历(根、左、右)对二叉树进行序列化，主要步骤为：
        1. 假设序列化的结果为 s，初始化 s 为空字符串
        2. 先序遍历二叉树时，如果遇到空节点(比如叶子节点的左、右节点为null)，就在字符串 s 的末尾添加 '#!'
        其中，# 表示这是空节点，! 表示节点值的结束标志
        3. 如果遇到不为空的节点时，假设节点值为3，就在字符串 s 的末尾添加 '3!'

        为什么需要用 ! 表示节点值的结束标志？
             12                 1
            /  \               /  \
           3   null           23   null
          /  \               /  \
        null  null     和  null  null

        都是 '123###' ，就会产生歧义，但是明显它们是两棵不同的树。使用 ! 表示的正确结果是：
        第1棵树： '12!3!#!#!#!'
        第2棵树： '1!23!#!#!#!'
        '''
        self.pickle_str = ''  # 每次调用本序列化方法时，先清空字符串
        self._pre_order_pickling(self.root)

        basepath = os.path.abspath(os.path.dirname(__file__))  # 当前模块文件的根目录
        with open(os.path.join(basepath, 'pickle_result.txt'), 'w') as f:
            f.write(self.pickle_str)

        return self.pickle_str

    def _pre_order_pickling(self, cur):
        '''树的遍历：深度优先，使用递归实现
        先序遍历: 根、左、右
        '''
        if cur is None:  # 递归的终止条件
            self.pickle_str += '#!'
            return

        self.pickle_str = self.pickle_str + str(cur.data) + '!'
        self._pre_order_pickling(cur.lchild)  # 如果当前节点(叶子节点)没有左节点，则传入的是None，会终止递归
        self._pre_order_pickling(cur.rchild)

    @classmethod
    def unpickling(self, filename):
        '''反序列化：文件中的字符串 --> 内存中的二叉树数据结构'''
        with open(filename, 'r') as f:
            result = f.read()

        # ['0', '1', '3', '7', '#', '#', '8', '#', '#', '4', '9', '#', '#', '#', '2', '5', '#', '#', '6', '#', '#', '']
        values = result.split('!')
        # 移除最后一个元素：''  注意不能 remove('')，因为可能添加节点时，就是添加binary_tree.breadth_first_add('')
        del values[-1]

        binary_tree = BinaryTree()  # 创建空树
        binary_tree.root = binary_tree._pre_order_create(values)  # 传入前序遍历序列，创建二叉树

        return binary_tree

    def _pre_order_create(self, pre_list, node=None):
        '''深度优先，需要传入 "扩展二叉树" 的前序遍历的列表
        二叉树的节点不一定左、右子树都存在，所以将缺少的 "空节点" 假设用虚拟节点补齐的话，
        补齐后的二叉树称为原二叉树的扩展二叉树
             A
            / \
           B   C
            \
             D

        扩展二叉树:
              A
            /    \
           B      C
          / \    /  \
        '#'  D  '#'  '#'
            / \
          '#' '#'
        '''
        if pre_list:  # 当列表不为空时，表示整棵二叉树还没完全创建完成。当列表为空时，函数隐式返回 None 给上层调用
            data = pre_list.pop(0)
            if data == '#':
                return  # 退出递归的条件，并返回 None 给上层调用
            else:
                node = Node(data)  # node 为每棵树（或者子树）的根节点
                node.lchild = self._pre_order_create(pre_list, node.lchild)
                node.rchild = self._pre_order_create(pre_list, node.rchild)
                return node  # 这里必须返回节点给上层递归调用

if __name__ == '__main__':
    binary_tree = BinaryTree()  # 创建空树
    binary_tree.add('A')  #


,
                                       next_ticket)) {
      KMP_FSYNC_ACQUIRED(lck);
      KA_TRACE(1000, ("__kmp_test_drdpa_lock: ticket #%lld acquired lock %p\n",
                      ticket, lck));
      lck->lk.now_serving = ticket; // non-volatile store

      // Since no threads are waiting, there is no possibility that we would
      // want to reconfigure the polling area.  We might have the cleanup ticket
      // value (which says that it is now safe to deallocate old_polls), but
      // we'll let a later thread which calls __kmp_acquire_lock do that - this
      // routine isn't supposed to block, and we would risk blocks if we called
      // __kmp_free() to do the deallocation.
      return TRUE;
    }
  }
  return FALSE;
}

static int __kmp_test_drdpa_lock_with_checks(kmp_drdpa_lock_t *lck,
                                             kmp_int32 gtid) {
  char const *const func = "omp_test_lock";
  if (lck->lk.initialized != lck) {
    KMP_FATAL(LockIsUninitialized, func);
  }
  if (__kmp_is_drdpa_lock_nestable(lck)) {
    KMP_FATAL(LockNestableUsedAsSimple, func);
  }

  int retval = __kmp_test_drdpa_lock(lck, gtid);

  if (retval) {
    lck->lk.owner_id = gtid + 1;
  }
  return retval;
}

int __kmp_release_drdpa_lock(kmp_drdpa_lock_t *lck, kmp_int32 gtid) {
  // Read the ticket value from the lock data struct, then the polls pointer and
  // the mask.  The polls pointer must be read before the mask!!! (See above)
  kmp_uint64 ticket = lck->lk.now_serving + 1; // non-atomic load
  std::atomic<kmp_uint64> *polls = lck->lk.polls; // atomic load
  kmp_uint64 mask = lck->lk.mask; // atomic load
  KA_TRACE(1000, ("__kmp_release_drdpa_lock: ticket #%lld released lock %p\n",
                  ticket - 1, lck));
  KMP_FSYNC_RELEASING(lck);
  polls[ticket & mask] = ticket; // atomic store
  return KMP_LOCK_RELEASED;
}

static int __kmp_release_drdpa_lock_with_checks(kmp_drdpa_lock_t *lck,
                                                kmp_int32 gtid) {
  char const *const func = "omp_unset_lock";
  KMP_MB(); /* in case another processor initialized lock */
  if (lck->lk.initialized != lck) {
    KMP_FATAL(LockIsUninitialized, func);
  }
  if (__kmp_is_drdpa_lock_nestable(lck)) {
    KMP_FATAL(LockNestableUsedAsSimple, func);
  }
  if (__kmp_get_drdpa_lock_owner(lck) == -1) {
    KMP_FATAL(LockUnsettingFree, func);
  }
  if ((gtid >= 0) && (__kmp_get_drdpa_lock_owner(lck) >= 0) &&
      (__kmp_ge


27\u5dee\u522b\uff0c\u662f\u5728\u793e\u4f1a\u4e3b\u4e49\u65f6\u671f\u5c31\u8981\u6d88\u706d\u7684\u3002", "type": "paragraph"}, {"text": "\u6765\u6e90\uff1a1967\u5e747\u6708\u4e00\u673a\u90e8\u8054\u59d4\u4f1a\u6210\u5957\u603b\u5c40\u300a\u71ce\u539f\u5175\u56e2\u300b\u3001\u7ea2\u4ee3\u4f1a\u5317\u4eac\u673a\u68b0\u5b66\u9662\u300a\u7ea2\u65d7\u300b\u3001\u4e09\u673a\u90e8\u9769\u547d\u9020\u53cd\u603b\u90e8\u9009\u7f16\u300a\u5386\u53f2\u7684\u89c1\u8bc1\u300b\u3002", "type": "paragraph"}]}
  </script>

    [返回索引页面]

   刘少奇向中央各部和北京市党员干部作的报告

   日期：1964-8-10 作者：刘少奇

   刘少奇

   刘少奇向中央各部和北京市党员干部作的关于社会主义教育运动及两种教育制度、两种劳动制度的报告（录音）

   一九六四年八月十日

   （一）社会主义教育问题，四清、五反问题

   最近到几个省区跑了一下，天津、济南、湖北、南京、上海，回来到郑州，都碰上开三级干部会，找第一书记谈了谈。

   几个省开三级干部会时，我都看了会上的讲话材料，对社会主


       //    D3D11.Device d3dDevice = (D3D11.Device)graphicsDevice.GetD3D11Device();
        //    ovrResult = ovrSession.CreateTextureSwapChainDX(d3dDevice.NativePointer, desc, out swapChain);
        //    if (ovrResult < 0)
        //        return ovrResult;
        //    swapChainData._swapChain = swapChain;

        //    // create backBuffers
        //    int texSwapChainCount;
        //    ovrResult = swapChain.GetTextureSwapChainLength(out texSwapChainCount);

        //    swapChainData._renderTarget = new RenderTarget2D(
        //        graphicsDevice, w, h, false,
        //        preferredFormat, preferredDepthFormat, preferredMultiSampleCount,
        //        RenderTargetUsage.DiscardContents);

        //    swapChainData._buckBuffers = new D3D11.Texture2D[texSwapChainCount];
        //    for (int i = 0; i < texSwapChainCount; i++)
        //    {
        //        IntPtr pDxTexture3D;
        //        ovrResult = swapChain.GetTextureSwapChainBufferDX(i, IID_ID3D11Texture2D, out pDxTexture3D);
        //        swapChainData._buckBuffers[i] = new D3D11.Texture2D(pDxTexture3D);
        //    }

        //    outSwapChainData = swapChainData;

        //    return 0;
        //}

        internal override int SubmitRenderTarget(GraphicsDevice graphicsDevice, RenderTarget2D rt)
        {
            int ovrResult;
            int index = 0;
            //ovrResult = SwapChain.GetCurrentIndex(out index);
            //if (ovrResult < 0)
            //    return ovrResult;

            //D3D11.Texture2D dstResource = _buckBuffers[index];
            //D3D11.Resource srcResource  = (D3D11.Resource)rt.GetD3D11Resource();
//
            //D3D11.Device d3dDevice  = (D3D11.Device)graphicsDevice.GetD3D11Device();
            //D3D11.DeviceContext d3dContext = d3dDevice.ImmediateContext;
            //
            //d3dContext.CopyResource(srcResource, dstResource);

            return 0;
        }
    }
}


APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.

use llvm::{BasicBlockRef, ValueRef};
use rustc::middle::ty;
use rustc::mir::repr as mir;
use syntax::abi::Abi;
use trans::adt;
use trans::attributes;
use trans::base;
use trans::build;
use trans::common::{self, Block, LandingPad};
use trans::debuginfo::DebugLoc;
use trans::foreign;
use trans::type_of;
use trans::type_::Type;
use trans::Disr;

use super::MirContext;
use super::operand::OperandValue::{FatPtr, Immediate, Ref};

impl<'bcx, 'tcx> MirContext<'bcx, 'tcx> {
    pub fn trans_block(&mut self, bb: mir::BasicBlock) {
        debug!("trans_block({:?})", bb);

        let mut bcx = self.bcx(bb);
        let data = self.mir.basic_block_data(bb);

        for statement in &data.statements {
            bcx = self.trans_statement(bcx, statement);
        }

        debug!("trans_block: terminator: {:?}", data.terminator());

        match *data.terminator() {
            mir::Terminator::Goto { target } => {
                build::Br(bcx, self.llblock(target), DebugLoc::None)
            }

            mir::Terminator::If { ref cond, targets: (true_bb, false_bb) } => {
                let cond = self.trans_operand(bcx, cond);
                let lltrue = self.llblock(true_bb);
                let llfalse = self.llblock(false_bb);
                build::CondBr(bcx, cond.immediate(), lltrue, llfalse, DebugLoc::None);
            }

            mir::Terminator::Switch { ref discr, ref adt_def, ref targets } => {
                let discr_lvalue = self.trans_lvalue(bcx, discr);
                let ty = discr_lvalue.ty.to_ty(bcx.tcx());
                let repr = adt::represent_type(bcx.ccx(), ty);
                let discr = adt::trans_get_discr(bcx, &repr, discr_lvalue.llval,
                                                 None, true);

                // The else branch of the Switch can't be hit, so branch to an unreachable
                // instruction so LLVM knows that
                let unreachable_blk = self.unreachable_block();
                let switch = build::Switch(bcx, discr, unreachable_blk.llbb, targets.len());
                assert_eq!(adt_def.variants.len(), targets.len());
                for (adt_variant, target) in adt_def.variants.iter().zip(targets) {
                    let llval = adt::trans_case(bcx, &*repr, Disr::from(adt_variant.disr_val));
                    let llbb = self.llblock(*target);

                    build::AddCase(switch, llval, llbb)
                }
            }

            mir::Terminator::SwitchInt { ref discr, switch_ty, ref values, ref targets } => {
                let (otherwise, targets) = targets.split_last().unwrap();
                let discr = build::Load(bcx, self.trans_lvalue(bcx, discr).llval);
                let switch = build::Switch(bcx, discr, self.llblock(*otherwise), values.len());
                for (value, target) in values.iter().zip(targets) {
                    let llval = self.trans_constval(bcx, value, switch_ty).immediate();
                    let llbb = self.llblock(*target);
                    build::AddCase(switch, llval


izar múltiples búsquedas.

Búsqueda de número de acceso masivo a través del botón Cargar números de acceso y un archivo de texto con el sufijo ".txt" o ".csv" que contenga una lista delimitada por comas o retornos de carro.

El interruptor Mostrar estudios importados en la parte superior derecha controla si los estudios importados se incluyen en la lista de resultados de la búsqueda.

Solo se mostrarán y estarán disponibles para selección los estudios que contengan modalidades establecidas para el proyecto.

Seleccionar estudios e importar

Los estudios se pueden seleccionar individualmente (clic del ratón), en grupos (manteniendo presionada la tecla CMD o CTRL) o en bloque usando el botón Seleccionar todo.

Deseleccione estudios haciendo clic individualmente o usando el botón Borrar selección.

Antes de importar estudios, elija qué nivel (Estudio, Serie, Instancia) usar para el proceso de importación (a través de DICOM C-MOVE) desde el menú desplegable, Nivel de movimiento.

Al hacer clic en el botón Importar y anonimizar se iniciará el Diálogo de importación de estudios.

Primero se consultará el servidor remoto para cada estudio seleccionado para compilar una jerarquía de UID del estudio correspondiente al nivel de movimiento seleccionado.

Luego se iniciará la importación y el Diálogo de importación de estudios mostrará una barra de progreso que rastrea el número de imágenes importadas de la jerarquía del estudio.

El proceso de importación finalizará una vez que se hayan solicitado todos los estudios y se hayan recibido todos los archivos de un estudio o se haya producido un tiempo de espera.

Si el servidor remoto no responde dentro de la configuración de tiempo de espera del proyecto: Tiempo de espera de la red para cada transferencia de archivos, el proceso de importación de este estudio se interrumpe.

El Diálogo de importación de estudios mostrará el resultado del proceso de importación cuando se complete, como se muestra en la captura de pantalla a continuación:

Después de cerrar el Diálogo de importación de estudios usando el botón Cerrar, los estudios importados con éxito se resaltarán en verde en la vista de resultados de la consulta como se muestra a continuación:

Manejo de problemas de movimiento DICOM

Si el proceso de importación no importa todos los estudios con éxito, ajuste el tiempo de espera de la red y el nivel de movimiento e inténtelo de nuevo haciendo clic en el botón de importació


  /** RPC method name to use with HBase 0.95+.  */
  private static final byte[] SCAN = new byte[] { 'S', 'c', 'a', 'n' };

  private static final byte[] OPEN_SCANNER = new byte[] {
    'o', 'p', 'e', 'n', 'S', 'c', 'a', 'n', 'n', 'e', 'r'
  };

  /**
   * RPC sent out to open a scanner on a RegionServer.
   */
  final class OpenScannerRequest extends HBaseRpc {

    /**
     * Default constructor that is used for every forward Scanner and
     * for the first Scanner in a reverse Scan
     */
    public OpenScannerRequest() {
      super(Scanner.this.table, start_key);
      is_first_reverse_region = false;
    }

    /**
     * Overloaded constructor for the second to last Scanners in a reverse scan
     * when scanning multiple regions.
     */
    public OpenScannerRequest(final byte[] table, final byte[] row){
      super(table, row);
    }

    @Override
    byte[] method(final byte server_version) {
      return (server_version >= RegionClient.SERVER_VERSION_095_OR_ABOVE
              ? SCAN
              : OPEN_SCANNER);
    }

    /**
     * Predicts a lower bound on the serialized size of this RPC.
     * This is to avoid using a dynamic buffer, to avoid re-sizing the buffer.
     * Since we use a static buffer, if the prediction is wrong and turns out
     * to be less than what we need, there will be an exception which will
     * prevent the RPC from being serialized.  That'd be a severe bug.
     */
    private int predictSerializedSize() {
      int size = 0;
      size += 4;  // int:  Number of parameters.
      size += 1;  // byte: Type of the 1st parameter.
      size += 3;  // vint: region name length (3 bytes => max length = 32768).
      size += super.region.name().length;  // The region name.

      size += 1;  // byte: Type of the 2nd parameter.
      size += 1;  // byte: Type again (see HBASE-2877).
      size += 1;  // byte: Version of Scan.
      size += 3;  // vint: start key length (3 bytes => max length = 32768).
      size += start_key.length;  // The start key.
      size += 3;  // vint: stop key length (3 bytes => max length = 32768).
      size += stop_key.length;  // The stop key.
      size += 4;  // int:  Max number of versions to return.
      size += 4;  // int:  Max number of KeyValues to get per RPC.
      size += 4;  // int:  Unused field only used by HBase's client.
      size += 1;  // bool: Whether or not to populate the blockcache.
      size += 1;  // byte: Whether or not to use a filter.
      if (filter != null) {
        size += filter.predictSerializedSize();
      }
      size += 8;  // long: Minimum timestamp.
      size += 8;  // long: Maximum timestamp.
      size += 1;  // byte: Boolean: "all time".
      size += 4;  // int:  Number of families.
      if (families != null) {
        // vint: Family length (guaranteed on 1 byte) for each family.
        size += families.length;
        for (int i = 0; i < families.length; i++) {
          byte[] family = families[i];
          size += family.length;  // The family.
          size += 4;  // int:  How many qualifiers follow?
          if (qualifiers != null && qualifiers[i] != null) {
            // vint: Qualifier length times number of qualifiers.
            size += 3 * qualifiers[i].length;
            for (byte[] qualifier : qualifiers[i]) {
              size += qualifier.length;  // The qualifier.
            }
          }
        }
      }
      return size;
    }

    /** Serializes this request.  */


�术是如何确保数字货币的安全性的。 |
| 帮助 | 我忘记了我的电脑密码，该怎么办？ |
|自然语言处理|请简要介绍一下自然语言处理的基本概念及其在实际应用中的作用是什么？|
|社交媒体|如何通过社交媒体营销提高品牌知名度？你会给出哪些建议？|
|大数据分析|请说明一下大数据分析的流程，并解释其中每一个步骤的作用。|
|人工智能技术|请列举目前市场上最常见的人工智能技术和它们各自的应用场景。|
|编程语言选择|当需要开发一个新项目时，你会使用哪些指标来选取合适的编程语言？|
|网站用户体验|在设计一个网站时，你会考虑哪些方面来提升用户体验？|
|数据可视化|如何通过数据可视化更好地展示数据并使其易于理解？|
|机器学习算法|请说明一下机器学习算法中的无监督学习和有监督学习的区别，并给出各自的应用场景。|
|软件测试|你认为软件测试的重要性体现在哪些方面？请具体阐述。|
|移动应用开发|请说明一下移动应用开发的流程，并解释其中每一个步骤的作用。|
| 图像分类                               | 给我一张照片，告诉我里面的人是男性还是女性？                     |
| 文本生成                               | 给定一个关于狗的主题，生成一篇文章。                               |
| 情感分析                               | 对这段文字进行情感分析：「昨天生日收到了好多礼物，真开心！」          |
| 语音识别                               | 这段录音中说的是什么话？                                          |
| 上下文理解                             | 「他吃了一个柠檬，嘴巴很酸。」问题是，「他」指的是谁？            |
| 筛选排序                               | 对给定数据按照年龄从小到大排序。                                    |
| 同义词替换                             | 把句子「我今天走路去公司了」中的「走路」替换成同义词。             |
| 大小写转换


cky Crit", tooltipText = "Enables using having critical hits stick. When off, crits display with +1236+, etc.. "};
SCT.LOCALS.OPTION_CHECK112 = { name = "Spell Color", tooltipText = "Enables or Disables showing spell damage in colors per spell class (colors not configurable)"};
SCT.LOCALS.OPTION_CHECK113 = { name = "Damage Text Down", tooltipText = "Enables or Disables scrolling text downwards"};

--Slider options values
SCT.LOCALS.OPTION_SLIDER101 = { name="Position Centrale De X", minText="-600", maxText="600", tooltipText = "Commande le placement du centre des textes"};
SCT.LOCALS.OPTION_SLIDER102 = { name="Position Centrale De Y", minText="-400", maxText="400", tooltipText = "Commande le placement du centre des textes"};
SCT.LOCALS.OPTION_SLIDER103 = { name="Se fanent La Vitesse", minText="rapidement", maxText="lent", tooltipText = "Commande la vitesse que les messages se fanent"};
SCT.LOCALS.OPTION_SLIDER104 = { name="Taille De Police", minText="petit", maxText="grand", tooltipText = "Commande la taille du texte"};

--Misc option values
SCT.LOCALS.OPTION_MISC101 = {name="SCTD Options "..SCTD.Version};
SCT.LOCALS.OPTION_MISC102 = {name="Fin", tooltipText = "Sauve tous les arrangements courants et cl\195\180ture les options"};
SCT.LOCALS.OPTION_MISC103 = {name="SCTD", tooltipText = "Ouvrez le menu d\'option"};
SCT.LOCALS.OPTION_MISC104 = {name="Damage Events", tooltipText = ""};
SCT.LOCALS.OPTION_MISC105 = {name="Display Options", tooltipText = ""};
SCT.LOCALS.OPTION_MISC106 = {name="Frame Options", tooltipText = ""};

--Animation Types
SCT.LOCALS.OPTION_SELECTION101 = { name="Police De Dommages", tooltipText = "Quelle police \195\160 employer pour des messages", table = {[1] = SCT.LOCALS.FONTS[1].name,[2] = SCT.LOCALS.FONTS[2].name,[3] = SCT.LOCALS.FONTS[3].name,[4] = SCT.LOCALS.FONTS[4].name}};
SCT.LOCALS.OPTION_SELECTION102 = { name="Contour De Police De Dommages", tooltipText = "Quel contour de police \195\160 employer pour des messages", table = {[1] = "Aucun",[2] = "Mince",[3] = "Profond\195\169ment"}};
SCT.LOCALS.OPTION_SELECTION103 = { name="Damage Animation Type", tooltipText = "Which animation type to use. Its HIGHLY recommended you use a different animation here than you use with SCT.", table = {[1] = "Vertical (Normal)",[2] = "Rainbow",[3] = "Horizontal",[4] = "Angled Down",[5] = "Angled Up",[6] = "Sprinkler"}};
SCT.LOCALS.OPTION_SELECTION104 = { name="Damage Side Style", tooltipText = "How side scrolling text should display", table = {[1] = "Alternating",[2] = "Damage Left",[3] = "Damage Right", [4] = "All Left", [5] = "All Right"}};


// Copyright (c) Microsoft Corporation. All rights reserved.
#pragma once

#ifndef STDAFX_H
#define STDAFX_H

#pragma warning (push)
#pragma warning (disable: 4005)

#include <windows.h>

#include <winrt/Windows.Foundation.h>
#include <winrt/Windows.Foundation.Collections.h>
#include <winrt/Windows.Devices.Enumeration.h>

namespace foundation = winrt::Windows::Foundation;
namespace collections = winrt::Windows::Foundation::Collections;

#include <winrt/Microsoft.Windows.Devices.Midi2.h>
#include <winrt/Microsoft.Windows.Devices.Midi2.CapabilityInquiry.h>
#include <winrt/Microsoft.Windows.Devices.Midi2.ClientPlugins.h>
#include <winrt/Microsoft.Windows.Devices.Midi2.Diagnostics.h>
#include <winrt/Microsoft.Windows.Devices.Midi2.Reporting.h>
#include <winrt/Microsoft.Windows.Devices.Midi2.Endpoints.Loopback.h>
#include <winrt/Microsoft.Windows.Devices.Midi2.Endpoints.Virtual.h>
#include <winrt/Microsoft.Windows.Devices.Midi2.Messages.h>
#include <winrt/Microsoft.Windows.Devices.Midi2.ServiceConfig.h>

using namespace winrt::Microsoft::Windows::Devices::Midi2;
using namespace winrt::Microsoft::Windows::Devices::Midi2::CapabilityInquiry;
using namespace winrt::Microsoft::Windows::Devices::Midi2::ClientPlugins;
using namespace winrt::Microsoft::Windows::Devices::Midi2::Diagnostics;
using namespace winrt::Microsoft::Windows::Devices::Midi2::Reporting;
using namespace winrt::Microsoft::Windows::Devices::Midi2::Endpoints::Loopback;
using namespace winrt::Microsoft::Windows::Devices::Midi2::Endpoints::Virtual;
using namespace winrt::Microsoft::Windows::Devices::Midi2::Messages;
using namespace winrt::Microsoft::Windows::Devices::Midi2::ServiceConfig;

#include <iostream>

#include <avrt.h>
#include <wil\resource.h>
#include <wil\result_macros.h>
#include <ppltasks.h>
#include <WexTestClass.h>
#include <Objbase.h>
#include "loopback_ids.h"
#include "MidiDefs.h"

#include "winmidi/init/Microsoft.Windows.Devices.Midi2.Initialization.hpp"
namespace init = Microsoft::Windows::Devices::Midi2::Initialization;

#include "..\SdkTestCommon.h"

#include "MidiEndpointConnectionBufferTests.h"
#include "MidiEndpointConnectionTests.h"
#include "MidiEndpointCreationThreadTests.h"
#include "MidiEndpointDeviceWatcherTests.h"
#include "MidiEndpointListenerTests.h"
#include "MidiLoopbackEndpointTests.h"
#include "MidiMessageSchedulerTests.h"
#include "MidiInitializationTests.h"
#include "MidiSessionTests.h"
#include "MidiVirtualDeviceTests.h"

#ifndef LOG_OUTPUT
#define LOG_OUTPUT(fmt, ...)  WEX::Logging::Log::Comment(WEX::Common::String().Format(fmt, __VA_ARGS__))
#endif

#pragma warning (pop)

#endif


(), class)
    }

    pub fn get_class_fields<K>(&self, class: K) -> Result<Vec<JFieldID>>
        where
            K: Transform<'a, JClass<'a>> {
        self.jvmti_rust().get_class_fields(self.jni_rust(), class)
    }

    pub fn get_implemented_interfaces<K>(&self, class: K) -> Result<Vec<JClass>>
        where
            K: Transform<'a, JClass<'a>> {
        self.jvmti_rust().get_implemented_interfaces(self.jni_rust(), class)
    }

    pub fn is_interface<K>(&self, class: K) -> Result<bool>
        where
            K: Transform<'a, JClass<'a>> {
        self.jvmti_rust().is_interface(self.jni_rust(), class)
    }

    pub fn is_array_class<K>(&self, class: K) -> Result<bool>
        where
            K: Transform<'a, JClass<'a>> {
        self.jvmti_rust().is_array_class(self.jni_rust(), class)
    }

    pub fn is_modifiable_class<K>(&self, class: K) -> Result<bool>
        where
            K: Transform<'a, JClass<'a>> {
        self.jvmti_rust().is_modifiable_class(self.jni_rust(), class)
    }

    pub fn get_source_debug_extension<K>(&self, class: K) -> Result<String>
        where
            K: Transform<'a, JClass<'a>> {
        self.jvmti_rust().get_source_debug_extension(self.jni_rust(), class)
    }

    pub fn get_class_loader<K>(&self, class: K) -> Result<JClassLoader>
        where
            K: Transform<'a, JClass<'a>> {
        self.jvmti_rust().get_class_loader(self.jni_rust(), class)
    }

    pub fn get_constant_pool<K>(&self, class: K) -> Result<JConstantPool>
        where
            K: Transform<'a, JClass<'a>> {
        self.jvmti_rust().get_constant_pool(self.jni_rust(), class)
    }

    pub fn get_class_version_numbers<K>(&self, class: K) -> Result<JClassVersionNumber>
        where
            K: Transform<'a, JClass<'a>> {
        self.jvmti_rust().get_class_version_numbers(self.jni_rust(), class)
    }
}
use super::*;

use std::cell::RefCell;
use std::collections::HashMap;

pub type ContextRef<'a> = Rc<RefCell<Context<'a>>>;

#[derive(Debug)]
pub struct Context<'a> {
    pub depth: usize,
    pub variables: HashMap<String, VariableValue<'a>>,
    pub last_value: VariableValue<'a>,
    pub ulid: u128,
}

impl<'a> From<RASTRef<'a>> for Context<'a> {
    fn from(ast: RASTRef<'a>) -> Context<'a> {
        let mut variables = HashMap::with_capacity(ast.borrow().variables.len());

        for var in &ast.borrow().variables {
            variables.insert(var.borrow().name.clone(), VariableValue::Nil);
        }

        Context {
            depth: ast.borrow().depth,
            variables,
            last_value: VariableValue::Nil,
            ulid: ast.borrow().ulid,
        }
    }
}
<gh_stars>1000+
fn foo() { let _ = async {} }
<filename>src/prefab/mod.rs
// Copyright 2022 <NAME>
// Copyright 2021 IOTA Stiftung
// SPDX-License-Identifier: Apache-2.0

#[cfg(feature = "backserver")]
/// Backserver provides websocket, http and prometheus server
pub mod backserver;
#[cfg(feature = "hyper")]
/// Hyper,


olChoice.Required,
            user = "user-id",
            includeThoughts = true,
            thinkingBudget = 1231,
            additionalProperties = mapOf("foo" to JsonPrimitive("bar")),
            frequencyPenalty = 0.43,
            presencePenalty = 0.523,
            parallelToolCalls = true,
            promptCacheKey = "key",
            safetyIdentifier = "safe-identifier",
            serviceTier = ServiceTier.PRIORITY,
            store = true,
            audio = OpenAIAudioConfig(format = OpenAIAudioFormat.OPUS, voice = OpenAIAudioVoice.Ash),
            logprobs = true,
            reasoningEffort = ReasoningEffort.HIGH,
            stop = listOf("aaa", "bbb", "ccc"),
            topLogprobs = 13,
            webSearchOptions = OpenAIWebSearchOptions(
                "high",
                userLocation = OpenAIUserLocation(
                    OpenAIUserLocation.ApproximateLocation(
                        city = "New York"
                    )
                )
            )
        )

        val target = source.copy()
        target shouldBeEqualToComparingFields source
    }
}
package ai.koog.prompt.executor.clients.openai.azure

import kotlin.jvm.JvmName
import kotlin.jvm.JvmStatic

/**
 * Represents the version of the Azure OpenAI Service.
 *
 * This class encapsulates the version string and provides a way to access predefined versions.
 * It also allows for easy comparison and retrieval of the latest stable and preview versions.
 *
 * @property value The version string of the Azure OpenAI Service.
 */
public class AzureOpenAIServiceVersion private constructor(
    @get:JvmName("value") public val value: String,
) {

    /**
     * Companion object to hold predefined versions and utility methods.
     */
    public companion object {

        private val values: MutableMap<String, AzureOpenAIServiceVersion> =
            mutableMapOf<String, AzureOpenAIServiceVersion>()

        /**
         * Returns the latest stable version of the Azure OpenAI Service.
         */
        @JvmStatic
        public fun latestStableVersion(): AzureOpenAIServiceVersion {
            // We can update the value every general available(GA)/stable announcement.
            return V2024_10_21
        }

        /**
         * Returns the latest preview version of the Azure OpenAI Service.
         */
        @JvmStatic
        public fun latestPreviewVersion(): AzureOpenAIServiceVersion {
            // We can update the value every preview announcement.
            return V2025_03_01_PREVIEW
        }

        /**
         * Creates an instance of [AzureOpenAIServiceVersion] from a version string.
         */
        @JvmStatic
        public fun fromString(version: String): AzureOpenAIServiceVersion =
            values.getOrPut(version) { AzureOpenAIServiceVersion(version) }

        /**
         * Version 2022-12-01 of the Azure OpenAI Service.
         */
        @JvmStatic
        public val V2022_12_01: AzureOpenAIServiceVersion = fromString("2022-12-01")

        /**
         * Version 2023-05-15 of the Azure OpenAI Service.
         */
        @JvmStatic
        public val V2023_05_15: AzureOpenAIServiceVersion = fromString("2023-05-15")

        /**
         * Version 2024-02-01 of the Azure OpenAI Service.
         */
        @JvmStatic
        public val V2024_02_01: AzureOpenAIServiceVersion = fromString("2024-02-01")

        /**
         * Version 2024-06-01 of the Azure OpenAI Service.
         */
        @JvmStatic
        public val V2024_06_01: AzureOpenAIServiceVersion = fromString("2024-06-01")

        /**
         * Version 2024-10-21 of the Azure OpenAI Service.


 { QueryDsl.from(a).where { a.addressId eq 2 }.single() }
            assertEquals("TOKYO", address1.street)
            assertEquals("STREET 2", address2.street)
        }
    }

    @Test
    fun requiresNew_throwException() = runBlocking {
        val a = Meta.address
        db.withTransaction {
            val address1 = db.runQuery { QueryDsl.from(a).where { a.addressId eq 1 }.single() }
            db.runQuery { QueryDsl.update(a).single(address1.copy(street = "TOKYO")) }
            try {
                implicit().transactionOperator.requiresNew {
                    val address2 = db.runQuery { QueryDsl.from(a).where { a.addressId eq 2 }.single() }
                    db.runQuery { QueryDsl.update(a).single(address2.copy(street = "OSAKA")) }
                    throw Exception()
                }
            } catch (ignored: Exception) {
            }
        }
        db.withTransaction {
            val address1 = db.runQuery { QueryDsl.from(a).where { a.addressId eq 1 }.single() }
            val address2 = db.runQuery { QueryDsl.from(a).where { a.addressId eq 2 }.single() }
            assertEquals("TOKYO", address1.street)
            assertEquals("STREET 2", address2.street)
        }
    }

    @BeforeTest
    fun before() {
        val sql =
            """
            CREATE TABLE ADDRESS(ADDRESS_ID INTEGER NOT NULL PRIMARY KEY, STREET VARCHAR(20) UNIQUE, VERSION INTEGER);
            INSERT INTO ADDRESS VALUES(1,'STREET 1',1);
            INSERT INTO ADDRESS VALUES(2,'STREET 2',1);
            INSERT INTO ADDRESS VALUES(3,'STREET 3',1);
            INSERT INTO ADDRESS VALUES(4,'STREET 4',1);
            INSERT INTO ADDRESS VALUES(5,'STREET 5',1);
            INSERT INTO ADDRESS VALUES(6,'STREET 6',1);
            INSERT INTO ADDRESS VALUES(7,'STREET 7',1);
            INSERT INTO ADDRESS VALUES(8,'STREET 8',1);
            INSERT INTO ADDRESS VALUES(9,'STREET 9',1);
            INSERT INTO ADDRESS VALUES(10,'STREET 10',1);
            INSERT INTO ADDRESS VALUES(11,'STREET 11',1);
            INSERT INTO ADDRESS VALUES(12,'STREET 12',1);
            INSERT INTO ADDRESS VALUES(13,'STREET 13',1);
            INSERT INTO ADDRESS VALUES(14,'STREET 14',1);
            INSERT INTO ADDRESS VALUES(15,'STREET 15',1);
            """.trimIndent()

        runBlocking {
            db.withTransaction {
                db.runQuery {
                    QueryDsl.executeScript(sql)
                }
            }
        }
    }

    @AfterTest
    fun after() {
        val sql = "DROP ALL OBJECTS"
        runBlocking {
            db.withTransaction {
                db.runQuery {
                    QueryDsl.executeScript(sql)
                }
            }
        }
    }
}
package org.komapper.tx.r2dbc

import io.r2dbc.spi.IsolationLevel
import io.r2dbc.spi.Option
import io.r2dbc.spi.TransactionDefinition
import org.komapper.tx.core.TransactionProperty
import java.time.Duration

fun <T> defineTransactionProperty(option: Option<T>, value: T): TransactionProperty {
    // handle well-known options
    val property = when (option) {
        TransactionDefinition.ISOLATION_LEVEL -> {
            when (value) {
                IsolationLevel.READ_UNCOMMITTED -> TransactionProperty.IsolationLevel.READ_UNCOMMITTED
                IsolationLevel.READ_COMMITTED -> TransactionProperty.IsolationLevel.READ_COMMITTED
                IsolationLevel.REPEATABLE_READ -> TransactionProperty.IsolationLevel.REPEATABLE_READ
                IsolationLevel.SERIALIZABLE -> TransactionProperty.IsolationLevel.SERIALIZABLE
                else -> null
            }
        }
        TransactionDefinition.LOCK_WAIT_TIMEOUT -> {
            when (value) {
                is D


import streamlit as st
from utils.gsheets_connect import get_brands_sheet

def show():
    st.header("Brands Management")
    sheet = get_brands_sheet()

    # List existing brands
    st.subheader("Existing Brands")
    brands = sheet.get_all_records()
    for brand in brands:
        st.text(f"{brand['Brand ID']}: {brand['Brand Name']}")

    # Add new brand
    st.subheader("Add New Brand")
    new_brand = st.text_input("Enter new brand name")
    if st.button("Add Brand"):
        if new_brand:
            new_id = len(brands) + 1
            sheet.append_row([new_id, new_brand])
            st.success(f"Brand {new_brand} added successfully!")
        else:
            st.error("Please enter a brand name.")

    # Edit brand
    st.subheader("Edit Brand")
    brand_to_edit = st.selectbox("Select brand to edit", [brand['Brand Name'] for brand in brands])
    new_brand_name = st.text_input("Enter new name for the brand")
    if st.button("Update Brand"):
        if new_brand_name:
            for idx, brand in enumerate(brands):
                if brand['Brand Name'] == brand_to_edit:
                    sheet.update_cell(idx+2, 2, new_brand_name)
                    st.success(f"Brand updated from {brand_to_edit} to {new_brand_name}")
                    break
        else:
            st.error("Please enter a new name for the brand.")

    # Delete brand
    st.subheader("Delete Brand")
    brand_to_delete = st.selectbox("Select brand to delete", [brand['Brand Name'] for brand in brands])
    if st.button("Delete Brand"):
        for idx, brand in enumerate(brands):
            if brand['Brand Name'] == brand_to_delete:
                sheet.delete_rows(idx+2)
                st.success(f"Brand {brand_to_delete} deleted successfully!")
                break


*deps:** update module github.com/pulumi/pulumi-terraform-bridge/v3 to v3.114.0 ([fe48c74](https://github.com/muhlba91/pulumi-proxmoxve/commit/fe48c74d70bc6cb9527f9cdeb7823e658813c2cb))
* **deps:** update module github.com/pulumi/pulumi/sdk/v3 to v3.192.0 ([5eb0f80](https://github.com/muhlba91/pulumi-proxmoxve/commit/5eb0f80e25eed8c8bfff05f33c30dc334f313b4c))
* **deps:** update module github.com/pulumi/pulumi/sdk/v3 to v3.193.0 ([4c28a36](https://github.com/muhlba91/pulumi-proxmoxve/commit/4c28a36459a351713e8688af7189a9f58598c0b7))
* **deps:** update module github.com/pulumi/pulumi/sdk/v3 to v3.194.0 ([e040131](https://github.com/muhlba91/pulumi-proxmoxve/commit/e04013150471805a632b3f4e2b85182b81a24374))
* **deps:** update module github.com/pulumi/pulumi/sdk/v3 to v3.196.0 ([717af1f](https://github.com/muhlba91/pulumi-proxmoxve/commit/717af1f61a32bb9bfcc57c44a895640b2faed66e))
* **deps:** update module github.com/pulumi/pulumi/sdk/v3 to v3.197.0 ([4edf9c2](https://github.com/muhlba91/pulumi-proxmoxve/commit/4edf9c22fe1a268eb21e2b4490f15374aa517862))
* **deps:** update sigstore/cosign-installer action to v3.10.0 ([b450f96](https://github.com/muhlba91/pulumi-proxmoxve/commit/b450f968462598a7e8508212e861182c85d2e744))
* **deps:** update step-security/harden-runner action to v2.13.1 ([7ecc98d](https://github.com/muhlba91/pulumi-proxmoxve/commit/7ecc98d60d46220d08ad93d0cc758a0031d9a641))

## [7.5.0](https://github.com/muhlba91/pulumi-proxmoxve/compare/v7.4.0...v7.5.0) (2025-08-26)

### Features

* prepare for upgrade upstream to v0.82.1 ([03ee989](https://github.com/muhlba91/pulumi-proxmoxve/commit/03ee9895411663938ad8870847beddbfb87b857c))

### Miscellaneous Chores

* **deps:** update actions/dependency-review-action action to v4.7.2 ([de96e20](https://github.com/muhlba91/pulumi-proxmoxve/commit/de96e20f10ad806d74b8d934db1ce30b8ea75bf7))
* **deps:** update actions/setup-java action to v5 ([dd186ae](https://github.com/muhlba91/pulumi-proxmoxve/commit/dd186ae5c26460c100adadcbc17dd995249da461))
* **deps:** update github/codeql-action action to v3.29.10 ([84f5a3b](https://github.com/muhlba91/pulum


pe.launch {
            deleteTodoUseCase(task)
            loadTasks()
        }
    }

    /**
     * 🔍 **Search Tasks**
     */
    private fun searchTasks(query: String) {
        viewModelScope.launch {
            searchTodosUseCase(query).collect { tasks ->
                _state.value = if (tasks.isEmpty()) ToDoState.Empty else ToDoState.Success(tasks)
            }
        }
    }

}
package net.pterodactylus.sone.test

import com.google.inject.Module
import org.mockito.*
import org.mockito.invocation.InvocationOnMock
import org.mockito.stubbing.*

inline fun <reified T : Any> mock(): T = Mockito.mock<T>(T::class.java)!!
inline fun <reified T : Any> mockBuilder(): T = Mockito.mock<T>(T::class.java, Mockito.RETURNS_SELF)!!
inline fun <reified T : Any> deepMock(): T = Mockito.mock<T>(T::class.java, Mockito.RETURNS_DEEP_STUBS)!!
inline fun <reified T : Any> selfMock(): T = Mockito.mock<T>(T::class.java, Mockito.RETURNS_SELF)!!
inline fun <reified T : Any> capture(): ArgumentCaptor<T> = ArgumentCaptor.forClass(T::class.java)

inline fun <reified E: Throwable> OngoingStubbing<*>.doThrow(): OngoingStubbing<*> = thenThrow(E::class.java)

inline fun <reified T : Any> bind(implementation: T): Module =
		Module { it!!.bind(T::class.java).toInstance(implementation) }

inline fun <reified T : Any> bindMock(): Module =
		Module { it!!.bind(T::class.java).toInstance(mock()) }

inline fun <reified T: Any?> whenever(methodCall: T) = Mockito.`when`(methodCall)!!
inline fun <reified T: Any?> Stubber.whenever(mock: T) = `when`(mock)!!

inline fun <reified T : Any> OngoingStubbing<T>.thenReturnMock(): OngoingStubbing<T> = this.thenReturn(mock())

operator fun <T> InvocationOnMock.get(index: Int): T = getArgument(index)

inline fun <reified T> argumentCaptor(): ArgumentCaptor<T> = ArgumentCaptor.forClass<T, T>(T::class.java)!!

fun <T> eq(t: T): T {
	ArgumentMatchers.eq(t)
	return null as T
}
package net.pterodactylus.sone.core

import com.google.common.eventbus.EventBus
import net.pterodactylus.sone.core.event.NewPostFoundEvent
import net.pterodactylus.sone.core.event.NewPostReplyFoundEvent
import net.pterodactylus.sone.core.event.PostRemovedEvent
import net.pterodactylus.sone.core.event.PostReplyRemovedEvent
import net.pterodactylus.sone.data.Post
import net.pterodactylus.sone.data.PostReply
import net.pterodactylus.sone.data.Sone
import net.pterodactylus.sone.database.Database
import net.pterodactylus.sone.test.argumentCaptor
import net.pterodactylus.sone.test.getInstance
import net.pterodactylus.sone.test.isProvidedByMock
import net.pterodactylus.sone.test.mock
import net.pterodactylus.sone.test.whenever
import net.pterodactylus.sone.web.baseInjector
import org.hamcrest.MatcherAssert.assertThat
import org.hamcrest.Matchers.contains
import org.hamcrest.Matchers.containsInAnyOrder
import org.hamcrest.Matchers.not
import org.hamcrest.Matchers.notNullValue
import org.junit.Before
import org.junit.Test
import org.mockito.Mockito.any
import org.mockito.Mockito.atLeastOnce
import org.mockito.Mockito.never
import org.mockito.Mockito.times
import org.mockito.Mockito.verify

/**
 *