("Hide your face from my sins *"),
                    b: String::from("and blot out all my iniquities.")
                },
              PsalmVerse {
                    number: 11,
                    a: String::from("Create in me a clean heart, O God, *"),
                    b: String::from("and renew a right spirit within me.")
                },
              PsalmVerse {
                    number: 12,
                    a: String::from("Cast me not away from your presence *"),
                    b: String::from("and take not your holy Spirit from me.")
                },
              PsalmVerse {
                    number: 13,
                    a: String::from("Give me the joy of your saving help again *"),
                    b: String::from("and sustain me with your bountiful Spirit.")
                },
              PsalmVerse {
                    number: 14,
                    a: String::from("I shall teach your ways to the wicked, *"),
                    b: String::from("and sinners shall return to you.")
                },
              PsalmVerse {
                    number: 15,
                    a: String::from("Deliver me from death, O God, *"),
                    b: String::from("and my tongue shall sing of your righteousness,\n O God of my salvation.")
                },
              PsalmVerse {
                    number: 16,
                    a: String::from("Open my lips, O Lord, *"),
                    b: String::from("and my mouth shall proclaim your praise.")
                },
              PsalmVerse {
                    number: 17,
                    a: String::from("Had you desired it, I would have offered sacrifice, *"),
                    b: String::from("but you take no delight in burnt-offerings.")
                },
              PsalmVerse {
                    number: 18,
                    a: String::from("The sacrifice of God is a troubled spirit; *"),
                    b: String::from("a broken and contrite heart, O God, you will not despise.")
                },
              PsalmVerse {
                    number: 19,
                    a: String::from("Be favorable and gracious to Zion, *"),
                    b: String::from("and rebuild the walls of Jerusalem.")
                },
              PsalmVerse {
                    number: 20,
                    a: String::from("Then you will be pleased with the appointed sacrifices,\nwith burnt-offerings and oblations; *"),
                    b: String::from("then shall they offer young bullocks upon your altar.")
                },
            ]
          }
        ]
    };
}

use std::time::{Instant, Duration};
use std::ops::{Add, Sub, AddAssign, SubAssign};

/// Utility to track time in a program
#[derive(Clone)]
pub struct Timer {
    start: Instant,
    last: Instant,
}

impl Timer {
    pub fn new() -> Timer {
        let now = Instant::now();

        Timer {
            start: now,
            last: now,
        }
    }

    /// Returns `(time_since_start, time_since_last_tick)`
    pub fn tick(&mut self) -> (Time, Time) {
        let now = Instant::now();

        let age = (now - self.start).into();
        let delta = (now - self.last).into();

        self.last = now;

        (age, delta)
    }


trunc = 777;
	mg_snprintf(NULL, &is_trunc, buf, 9, "%9i", 123);
	ck_assert_str_eq(buf, "      12");
	ck_assert_int_eq(is_trunc, 1);

	is_trunc = 777;
	mg_snprintf(NULL, &is_trunc, buf, 8, "%9i", 123);
	ck_assert_str_eq(buf, "      1");
	ck_assert_int_eq(is_trunc, 1);

	is_trunc = 777;
	mg_snprintf(NULL, &is_trunc, buf, 7, "%9i", 123);
	ck_assert_str_eq(buf, "      ");
	ck_assert_int_eq(is_trunc, 1);

	is_trunc = 777;
	strcpy(buf, "1234567890");
	mg_snprintf(NULL, &is_trunc, buf, 0, "%i", 543);
	ck_assert_str_eq(buf, "1234567890");
	ck_assert_int_eq(is_trunc, 1);
}
END_TEST

START_TEST(test_mg_strcasestr)
{
	/* Adapted from unit_test.c */
	/* Copyright (c) 2013-2015 the Civetweb developers */
	/* Copyright (c) 2004-2013 Sergey Lyubka */
	static const char *big1 = "abcdef";
	mark_point();

	ck_assert(mg_strcasestr("Y", "X") == NULL);
	ck_assert(mg_strcasestr("Y", "y") != NULL);
	ck_assert(mg_strcasestr(big1, "X") == NULL);
	ck_assert(mg_strcasestr(big1, "CD") == big1 + 2);
	ck_assert(mg_strcasestr("aa", "AAB") == NULL);
}
END_TEST

START_TEST(test_parse_port_string)
{
	/* Adapted from unit_test.c */
	/* Copyright (c) 2013-2020 the Civetweb developers */
	/* Copyright (c) 2004-2013 Sergey Lyubka */
	struct t_test_parse_port_string {
		const char *port_string;
		int valid;
		int ip_family;
		uint16_t port_num;
	};

	static struct t_test_parse_port_string testdata[] =
	{ {"0", 1, 4, 0},
	  {"1", 1, 4, 1},
	  {"65535", 1, 4, 65535},
	  {"65536", 0, 0, 0},

	  {"1s", 1, 4, 1},
	  {"1r", 1, 4, 1},
	  {"1k", 0, 0, 0},

	  {"1.2.3", 0, 0, 0},
	  {"1.2.3.", 0, 0, 0},
	  {"1.2.3.4", 0, 0, 0},
	  {"1.2.3.4:", 0, 0, 0},

	  {"1.2.3.4:0", 1, 4, 0},
	  {"1.2.3.4:1", 1, 4, 1},
	  {"1.2.3.4:65535", 1, 4, 65535},
	  {"1.2.3.4:65536", 0, 0, 0},

	  {"1.2.3.4:1s", 1, 4, 1},
	  {"1.2.3.4:1r", 1, 4, 1},
	  {"1.2.3.4:1k", 0, 0, 0},

#if defined(USE_IPV6)
	  /* IPv6 config */
	  {"[::1]:123", 1, 6, 123},
	  {"[::]:80", 1, 6, 80},
	  {"[3ffe:2a00:100:7031::1]:900", 1, 6, 900},

	  /* IPv4 + IPv6 config */
	  {"+80", 1, 4 + 6, 80},
#else
	  /* IPv6 config: invalid if IPv6 is not activated */
	  {"[::1]:123", 0, 0, 123},
	  {"[::]:80", 0, 0, 80},
	  {"[3ffe:2a00:100:7031::1]:900", 0, 0, 900},

	  /* IPv4 + IPv6 config: only IPv4 if IPv6 is not activated */
	  {"+80", 1, 4, 80},
#endif

	  {NULL, 0, 0, 0} };

	struct socket so;
	struct vec vec;
	int ip_family;
	int i, ret;

	mark_point();

	for (i = 0; testdata[i].port_string != NULL; i++) {
		vec.ptr = testdata[i].port_string;
		vec.len = strlen(vec.ptr);

		ip_family = 123;
		ret = parse_port_string(&vec, &so, &ip_family);

		if ((ret != testdata[i].valid)
		    || (ip_family != testdata[i].ip_family)) {
			ck_abort_msg("Port string [%s]: "
			             "expected valid=%i, family=%i; "
			             "got valid=%i, family=%i",
			             testdata[i].port_string,
			             testdata[i].valid,
			             testdata[i].ip_family,
			             ret,
			             ip_family);
		}
		if (ip_family == 4) {
			ck_assert_int_eq((int)so.lsa.sin.sin_family, (int)AF_INET);
		}
		if (ip_family == 6) {
			ck_assert_int_eq((int)so.lsa.sin.sin_family, (int)AF_INET6);
		}
		if (ret) {
			/* Test valid strings only */
			ck_assert_int_eq(htons(so.lsa.sin.sin_port), testdata[i].port_num);
		}
	}

	/* special case: localhost can be ipv4 or ipv6 */
	vec.ptr = "localhost:123";
	vec.len = strlen(vec.ptr);
	ret = parse_port_string(&vec, &so, &ip_family);
	ck_assert_int_eq(ret, 1);
	if ((ip_family != 4) && (ip_family != 6)) {
		ck_abort_msg("IP family must be 4 or 6 but is %i", (int)ip_family);
	}
	ck_assert_int_eq((int)htons(so.lsa.sin.sin_port), (int)123);
}
END_TEST

START_TEST(test_encode_decode)
{
	char buf[128];
	const char *alpha = "abcdefghijklmnopqrstuvwxyz";
	const char *nonalpha = " !\"#$%&'()*+,-./0123456789:;<=>?@";
	const char *nonalpha_url_enc1 =
	    "%20%21%22%23$%25%26%27()%2a%2b,-.%2f0123456789%3a;%3c%3d%3e%3f%40";
	const char *nonalpha_url_enc2 =
	    "%20!%22%23%24%25%26'()*%2B%2C-.%2F0123456789%3A%3B%3C%3D%3E%3F%40";
	int ret;
	size_t len;

#if defined(USE_WEBSOCKET) || defined(USE_LUA)
	const char *alpha_b64_enc = "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXo=";
	const char *nonalpha_b64_enc =
	    "ICEiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9A";

	mark_point();

	memset(buf, 77, sizeof(buf));
	base64_encode((unsigned char *)"a", 1, buf);
	ck_assert_str_eq(buf, "YQ==");

	memset(buf, 77, sizeof(buf));
	base64_encode((unsigned char *)"ab", 1, buf);
	ck_assert_str_eq(buf, "YQ==");

	m


#include "fail.h"

#if (defined(__386__) || defined(__I86__) || defined(_M_I86)) && !defined(__LINUX__)

// verify __interrupt implies default __far

typedef void __interrupt __far (*FAR_INT)( void );

extern void __interrupt int1( void );

void __interrupt __export int2( void )
{
}

void set_vec( void ( __interrupt *p )( void ) )
{
    if( sizeof( p ) != sizeof( FAR_INT ) ) fail(__LINE__);
    if( sizeof( &int1 ) != sizeof( FAR_INT ) ) fail(__LINE__);
    if( sizeof( &int2 ) != sizeof( FAR_INT ) ) fail(__LINE__);
}

void __far  *Ptr;
long long   Llp;

// verify that far pointer <-> long long conversions can generate code
// and test other fun pointer <-> integer conversions

long long llptr( void )
{
#ifdef __FLAT__
    return( (long long)&Ptr );  // should generate 'mov edx,ds'
#else
    return( (long long)(void __far *)&Ptr );  // should generate 'mov edx,ds'
#endif
}

void ptr_cvt( int __near *np )
{
#ifdef _M_I86
    void __near *n_ptr;
    long        l_tmp;
#endif
    void __far  *f_ptr;
    long long   tmp;

    f_ptr = Ptr;
    if( f_ptr ) fail(__LINE__); // Ptr had to be initialized to NULL
    tmp = (long long)f_ptr;
    if( Ptr != (void __far *)tmp ) fail(__LINE__);
    ++tmp;
    f_ptr = (void __far *)tmp;
    Ptr = f_ptr;
    if( Ptr != (void __far *)tmp ) fail(__LINE__);
    if( Ptr != (void __far *)1 ) fail(__LINE__);

#ifdef _M_I86
    /* 16-bit tests - assuming near pointer is 2 int/short sized, far pointer is long sized */
    /* The code is deliberately unclean and doesn't use explicit casts! */
#if 0
    n_ptr = NULL;
    l_tmp = n_ptr;
    f_ptr = n_ptr;
    if( l_tmp == 0 ) fail( __LINE__ );      /* must be DS:0, not zero */
    if( n_ptr != f_ptr ) fail( __LINE__ );  /* both conversions must yield the same result */
#endif

    f_ptr = 0x55;
    n_ptr = 0x55;
    if( n_ptr == f_ptr ) fail( __LINE__ );  /* DS:55 is not 0:55 */
    if( f_ptr == n_ptr ) fail( __LINE__ );  /* same as above */
    if( f_ptr != 0x55 ) fail( __LINE__ );   /* 0:55 is 0:55 */
    if( 0x55 != f_ptr ) fail( __LINE__ );   /* same as above */

    n_ptr = 0x123456;
    if( n_ptr != 0x3456 ) fail( __LINE__ );
    n_ptr = (void __near *)0xfff8;

    f_ptr = 0x123456;
    if( f_ptr != 0x123456 ) fail( __LINE__ );

    if( n_ptr < (void __near *)~0x0f ) fail( __LINE__ );
    if( (void __far *)0x10000 > np ) fail( __LINE__ );
    if( (void __far *)0x10000 > np ) fail( __LINE__ );
#endif

    f_ptr = &Ptr;
    Llp = f_ptr;
#ifdef __FLAT__
    /* In flat model, we want (long long)&foo to be equivalent to (long)&foo.
     * However, explicit __near/__far keywords still apply. In other models,
     * (long long)&foo will convert to far pointer first.
     */
    if( Llp == llptr() ) fail( __LINE__ );
    if( (long)&Ptr != llptr() ) fail( __LINE__ );
#else
    if( Llp != llptr() ) fail( __LINE__ );
#ifdef __386__  /* In 16-bit mode, long already contains the full address. */
    if( (long)&Ptr == llptr() ) fail( __LINE__ );
#endif
#endif
}

#else

void *Ptr;

void set_vec( int i )
{
    i = i;
}

void ptr_cvt( void *p )
{
    p = p;
}

#endif

int main( void )
{
    set_vec( 0 );
    ptr_cvt( Ptr );
    _PASS;
}


  [`${child}`]: new_tree
        }
      : null;
  }
};

const deepFilter = (arr: any, filterFn: any, child = "children") => {
  if (!isArray(arr) || !isFunction(filterFn)) {
    return arr;
  } else {
    const old_arr = JSON.parse(JSON.stringify(arr));
    let new_arr: any[] = [];
    old_arr.forEach((item: any) => {
      const new_item = deepFun(item, filterFn, child);
      new_item && new_arr.push(new_item);
    });
    return new_arr;
  }
};

// 对象是否含有某几个属性
const objHasProp = (obj: { hasOwnProperty: (arg0: any) => any }, props: any[]) => {
  if (!isObject(obj) || !isArray(props)) {
    return false;
  }

  let has = true;
  props.forEach((xo: any) => {
    if (!obj.hasOwnProperty(xo)) {
      has = false;
      return;
    }
  });

  return has;
};

/**
 * 存入localStorage
 * @param {*} obj
 */
const saveToStorage = (id: string, value: any) => {
  if (id && localStorage && localStorage.setItem) {
    localStorage.setItem(id, JSON.stringify(value));
  } else {
    return;
  }
};

/**
 * 从localStorage取
 * @param {*} obj
 */
const getFormStorage = (id: string) => {
  if (id && localStorage && localStorage.setItem) {
    const value = localStorage.getItem(id);
    return value ? JSON.parse(value) : null;
  } else {
    return null;
  }
};

/**
 * 是否为经过JSON.stringify()
 * @param {*} str
 */
const isJSONStringify = (str: string | string[]) => {
  if (!str) return false;

  if (!(typeof str === "string")) return false;

  if (str.indexOf("{") === 0 || str.indexOf("[{") === 0) return true;

  return false;
};

/**
 * 获取Dom到页面左侧的距离
 * @param {*} element
 */
const getElementLeft = (element: { offsetLeft: any; offsetParent: any }) => {
  var actualLeft = element.offsetLeft;
  var current = element.offsetParent;

  while (current !== null) {
    actualLeft += current.offsetLeft;
    current = current.offsetParent;
  }
  return actualLeft;
};

/**
 * 获取FormItem的值
 * @param {*} form_key
 * @param {*} form
 */
const getFormItemValue = (form_key: any, form: { getFieldValue: any }) => {
  if (!form_key) return null;
  const { getFieldValue } = form;

  return !getFieldValue ? null : getFieldValue(`${form_key}`);
};

/**
 * 设置FormItem的值
 * @param {*} form_key
 * @param {*} value
 * @param {*} props
 */
const setFormItemValue = (form_key: any, value: any, form: { setFieldsValue: any }) => {
  if (!form_key) return null;
  const { setFieldsValue } = form;

  setFieldsValue && setFieldsValue({ [`${form_key}`]: value });
};

/**
 * 循环检测 达成条件 回调fn
 * @param {*} fn
 * @param {*} cod
 */
const bsRunWhen = (fn: { (value?: unknown): void; (): void }, cod: () => any) => {
  if (cod()) {
    fn();
    return;


have any
 * questions.
 */

/*
 * @test
 * @key headful
 * @bug 8262085
 * @summary Tests tooltip for not throwing IllegalArgumentException on fast switching between frames.
 * @run main FastTooltipSwitchIAE
 */

import javax.swing.JToolTip;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;

public class FastTooltipSwitchIAE {
    static Dimension oneByOneSize = new Dimension(1, 1);

    public static void main(String[] args) {
        for (UIManager.LookAndFeelInfo laf : UIManager.getInstalledLookAndFeels()) {
            try {
                SwingUtilities.invokeAndWait(() -> setLookAndFeel(laf));
                SwingUtilities.invokeAndWait(FastTooltipSwitchIAE::doTest);
                System.out.println("Test passed for LookAndFeel " + laf.getClassName());
            } catch (Exception e) {
                throw new RuntimeException("Test failed for " + laf.getClassName(), e);
            }
        }
    }

    private static void setLookAndFeel(final UIManager.LookAndFeelInfo laf) {
        try {
            System.out.println("LookAndFeel: " + laf.getClassName());
            UIManager.setLookAndFeel(laf.getClassName());
        } catch (UnsupportedLookAndFeelException ignored) {
            System.err.println("Unsupported L&F: " + laf.getClassName());
        } catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
            throw new RuntimeException(e);
        }
    }

    private static void doTest() {
        JToolTip toolTip = new JToolTip();
        toolTip.setTipText("
Hello world
");
        toolTip.setMinimumSize(oneByOneSize);
        toolTip.setMaximumSize(oneByOneSize);
        toolTip.setPreferredSize(oneByOneSize);
        toolTip.setBounds(100, 100, 1, 1);

        BufferedImage img = new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB);
        Graphics2D g2d = img.createGraphics();

        toolTip.paint(g2d);

        g2d.dispose();
    }
}
/*
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

/**
 * This file is available under and governed by the GNU General Public
 * License version 2 only, as published by the Free Software Foundation.
 * However, the following notice accompanied the original version of this
 * file:
 *
 * ASM: a very small and fast Java bytecode manipulation framework
 * Copyright (c) 2000-2011 INRIA, France Telecom
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are


/*
 * Cantata
 *
 * Copyright (c) 2011-2022 Craig Drummond <craig.p.drummond@gmail.com>
 *
 * ----
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; see the file COPYING.  If not, write to
 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 * Boston, MA 02110-1301, USA.
 */

#ifndef NOTELABEL_H
#define NOTELABEL_H

#include <QWidget>
#include "statelabel.h"
#include "support/urllabel.h"

class NoteLabel : public QWidget
{
    Q_OBJECT
public:
    static QString formatText(const QString &text);
    NoteLabel(QWidget *parent=nullptr);
    void setText(const QString &text) { label->setText(formatText(text)); }
    void appendText(const QString &text) { label->setText(label->text()+text); }
    QString text() const { return label->text(); }
    void setProperty(const char *name, const QVariant &value);
    void setOn(bool o) { label->setOn(o); }
private:
    StateLabel *label;
};

class UrlNoteLabel : public QWidget
{
    Q_OBJECT
public:
    UrlNoteLabel(QWidget *parent=nullptr);
    void setText(const QString &text) { label->setText(NoteLabel::formatText(text)); }
    void appendText(const QString &text) { label->setText(label->text()+text); }
    QString text() const { return label->text(); }
    void setProperty(const char *name, const QVariant &value);
Q_SIGNALS:
    void leftClickedUrl();
private:
    UrlLabel *label;
};

class PlainNoteLabel : public StateLabel
{
public:
    PlainNoteLabel(QWidget *parent=nullptr);
    void setText(const QString &text) { StateLabel::setText(NoteLabel::formatText(text)); }
};

class PlainUrlNoteLabel : public UrlLabel
{
public:
    PlainUrlNoteLabel(QWidget *parent=nullptr);
    void setText(const QString &text) { UrlLabel::setText(NoteLabel::formatText(text)); }
};

#endif


       ?zero    akutan:source   place:san_francisco`,
		insert: `
			?zero   the:sky  akutan:is       colors:blue
			?one    ?zero    akutan:source   place:san_francisco
			        ?one     akutan:source   web:weather_com`,
		expRes: &api.InsertResult{
			Index:  3,
			Status: api.InsertStatus_OK,
		},
	},
	{
		name: "meta3",
		preload: `
			?zero   the:sky  akutan:is       colors:blue
			?one    ?zero    akutan:source   place:san_francisco
			?two    ?one     akutan:source   web:weather_com
			?three  ?two     akutan:channel  comms:web
			        ?three   data:signal   0.8`,
		insert: `
			?zero   the:sky  akutan:is       colors:blue
			?one    ?zero    akutan:source   place:san_francisco
			?two    ?one     akutan:source   web:weather_com
			?three  ?two     akutan:channel  comms:web
			        ?three   data:noise    0.65
			        ?three   akutan:like     <aol>
			        ?three   data:signal   0.8`,
		expRes: &api.InsertResult{
			Index:  3,
			Status: api.InsertStatus_OK,
		},
	},

	{
		name: "externalID wellknown fact",
		insert: `
			<HasExternalID> <HasExternalID> "HasExternalID"`,
		expRes: &api.InsertResult{
			Index:  0,
			Status: api.InsertStatus_OK,
		},
	},
	{
		name: "assign externalID",
		preload: `
			the:sky akutan:is colors:blue`,
		insert: `
			the:sky <HasExternalID> "the:skies"`,
		expRes: &api.InsertResult{
			Index:  3,
			Status: api.InsertStatus_OK,
		},
	},
	{
		name: "assign and use externalID existing",
		preload: `
			the:sky akutan:is colors:blue`,
		insert: `
			the:sky <HasExternalID> "the:skies"
			the:skies akutan:is colors:gray`,
		expRes: &api.InsertResult{
			Index:  3,
			Status: api.InsertStatus_OK,
		},
	},
	{
		name: "assign and use externalID new",
		insert: `
			the:sky <HasExternalID> "the:skies"
			the:sky akutan:is colors:blue
			the:skies akutan:is colors:gray`,
		expRes: &api.InsertResult{
			Index:  1,
			Status: api.InsertStatus_OK,
		},
	},
	{
		name: "use before assign externalID",
		insert: `
			the:skies akutan:is colors:gray
			the:sky <HasExternalID> "the:skies"`,
		expRes: &api.InsertResult{
			Status: api.InsertStatus_SchemaViolation,
			Error:  `can't use and then manually assign external ID "the:skies" (fact 2)`,
		},
	},

	{
		name: "assign external ID to fact",
		preload: `
			?fact  the:sky  akutan:is          colors:blue
			       ?fact    <HasExternalID>  "skyisblue"`,
		insert: `
			<skyisblue> akutan:source place:san_francisco`,
		expRes: &api.InsertResult{
			Status: api.InsertStatus_OK,
			Index:  3,
		},
		expStored: `
			{idx:1 id:1001 s:1002 p:4 o:"the:sky"}
			{idx:1 id:1003 s:1004 p


-font-size);
  color: var(--prism-marker-color);
}

[class~='language-html']:before,
[class~='language-markup']:before {
  content: 'html';
}

[class~='language-md']:before,
[class~='language-markdown']:before {
  content: 'md';
}

[class~='language-css']:before {
  content: 'css';
}

[class~='language-sass']:before {
  content: 'sass';
}

[class~='language-scss']:before {
  content: 'scss';
}

[class~='language-less']:before {
  content: 'less';
}

[class~='language-stylus']:before {
  content: 'styl';
}

[class~='language-js']:before,
[class~='language-typescript']:before {
  content: 'js';
}

[class~='language-ts']:before,
[class~='language-typescript']:before {
  content: 'ts';
}

[class~='language-json']:before {
  content: 'json';
}

[class~='language-rb']:before,
[class~='language-ruby']:before {
  content: 'rb';
}

[class~='language-py']:before,
[class~='language-python']:before {
  content: 'py';
}

[class~='language-sh']:before,
[class~='language-bash']:before {
  content: 'sh';
}

[class~='language-php']:before {
  content: 'php';
}

[class~='language-go']:before {
  content: 'go';
}

[class~='language-rust']:before {
  content: 'rust';
}

[class~='language-java']:before {
  content: 'java';
}

[class~='language-c']:before {
  content: 'c';
}

[class~='language-yaml']:before {
  content: 'yaml';
}

[class~='language-vue']:before {
  content: 'vue';
}

[class~='language-dockerfile']:before {
  content: 'dockerfile';
}

[class*='language-']:before {
  font-family: var(--code-font-family);
}

span[class~='language-css']:before {
  content: '';
}

:root {
  --el-fill-color-light: #f5f7fa;
  --el-fill-color-lighter: #fafafa;
  --prism-marker-opacity: 0.6;
  --prism-marker-color: var(--code-text-color);
  --prism-line-height: var(--code-line-height);
  --vp-layout-max-width: 1640px;
}

html:not(.dark) {
  --prism-builtin: #3182bd;
  --prism-comment: #848486;
  --prism-deleted: #3182bd;
  --prism-function: #6196cc;
  --prism-boolean: #c25205;
  --prism-number: #c25205;
  --prism-property: #717c11;
  --prism-punctuation: #a8a9cc;
  --prism-keyword: #c792ea;
  --prism-variable: #0b8235;
  --prism-url-decoration: #67cdcc;
  --prism-symbol: green;
  --prism-selector: #0b8235;
}

html.dark {
  --prism-scheme: dark;
  --prism-foreground: #a6accd;
  --prism-background: #181818;
  --prism-comment: #758575;
  --prism-string: #c3e88d;
  --prism-literal: #429988;
  --prism-keyword


deferredValues[name];
        if (!!expression)
        {
            return this.evaluateExpression(expression);
        }

        return null;
    }

    public evaluateExpression(expression: string): string
    {
        // GNU make manual, section 6.2:
        // Leading whitespace characters are discarded from your
        // input before substitution of variable references and
        // function calls
        expression = expression.replace(/^\s+/, "");

        return this.evaluateExpressionNoTrim(expression);
    }

    public evaluateExpressionNoTrim(expression: string): string
    {
        var self = this;
        var res =
            resolveString(
                expression,
                (variableName: string) => self.getValue(variableName),
                (functionName: string, params: string[]) => self.invokeBuiltinFunction(functionName, params)
            );
        //console.error("Evaluated: '" + expression + "' => '" + res + "'");
        return res;
    }

    private invokeBuiltinFunction(
        functionNameExpression: string,
        parameterExpressions: string[]
    ): string
    {
        let functionName = this.evaluateExpression(functionNameExpression);
        let parameters = parameterExpressions.map(p=>this.evaluateExpression(p));

        return "<built-in functions not defined yet>";
    }

    /*************************************************************************
     * Defining variables:
     * ===================
     *
     *************************************************************************/
    public defineSimpleVariable(nameExpression: string, valueExpression: string): void
    {
        let name = this.evaluateExpression(nameExpression);

        this.setValueImmediate(name, valueExpression);

        log.info("DEFINE SIMPLE:      '" + name + "' = '" + valueExpression + "'");
        //console.log("VARIABLES:\n" + JSON.stringify(this.variables));
    }

    public defineRecursiveVariable(nameExpression: string, valueExpression: string): void
    {
        let name = this.evaluateExpression(nameExpression);

        this.setValueDeferred(name, valueExpression);

        log.info("DEFINE RECURSIVE:   '" + name + "' = '" + valueExpression+"'");
    }

    public defineConditionalVariable(nameExpression: string, valueExpression: string): void
    {
        let name = this.evaluateExpression(nameExpression);

        if (this.getValue(name)===null)
        {
            this.setValueDeferred(name, valueExpression);
        }

        log.info("DEFINE CONDITIONAL: '" + name + "' = '" + valueExpression+"'");
    }

    public defineShellVariable(nameExpression: string, shellCommandExpression: string): void
    {
        // GNU make manual, sect. 6.5:
        // This operator first evaluates the right-hand side, then passes
        // that result to the shell for execution. If the result of the
        // execution ends in a newline, that one newline is removed; all
        // other newlines are replaced by spaces. The resulting string is
        // then placed into the named recursively-expanded variable.

        let name = this.evaluateExpression(nameExpression);
        let shellCommand = this.evaluateExpression(shellCommandExpression);

        let value = this._execute(shellCommand);

        if (value.endsWith(os.EOL))
            value = value.substr(0, value.length - os.EOL.length);

        value = value.replace(os.EOL, " ")

        this.setValueImmediate(name, value);
        log.info("DEFINE SHELL:       '" + name + "' = '" + value + "'");
    }


.py#" onclick="document.getElementById('form-MinBaiUPSNetAUnified').submit();"> Min Bai,
</form>
<form id="form-ErsinYumerUPSNetAUnified" action="http://openaccess.thecvf.com/CVPR2019_search.py" method="post" class="authsearch">
<input type="hidden" name="query" value=" Ersin Yumer">
 Ersin Yumer,
</form>
<form id="form-RaquelUrtasunUPSNetAUnified" action="http://openaccess.thecvf.com/CVPR2019_search.py" method="post" class="authsearch">
<input type="hidden" name="query" value=" Raquel Urtasun">
 Raquel Urtasun
</form>

[pdf]

[bibtex]

@InProceedings{Xiong_2019_CVPR,

author = {Xiong, Yuwen and Liao, Renjie and Zhao, Hengshuang and Hu, Rui and Bai, Min and Yumer, Ersin and Urtasun, Raquel},

title = {UPSNet: A Unified Panoptic Segmentation Network},

booktitle = {The IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},

month = {June},

year = {2019}

}

JSIS3D: Joint Semantic-Instance Segmentation of 3D Point Clouds With Multi-Task Pointwise Networks and Multi-Value Conditional Random Fields

<form id="form-Quang-HieuPhamJSIS3DJointSemanticInstance" action="http://openaccess.thecvf.com/CVPR2019_search.py" method="post" class="authsearch">
<input type="hidden" name="query" value="Quang-Hieu Pham">
Quang-Hieu Pham,
</form>
<form id="form-ThanhNguyenJSIS3DJointSemanticInstance" action="http://openaccess.thecvf.com/CVPR2019_search.py" method="post" class="authsearch">
<input type="hidden" name="query" value=" Thanh Nguyen">
 Thanh Nguyen,
</form>
<form id="form-Binh-SonHuaJSIS3DJointSemanticInstance" action="http://openaccess.thecvf.com/CVPR2019_search.py" method="post" class="authsearch">
<inp


margin-bottom:5px}.bucket h3,.bucket h4{color:#c4c!important}.bucket h5{color:#ccd;margin:0 0 10px 0;font-size:18px}#content .bucket,#sidebar .bucket{border:1px solid #345;padding:15px;margin-right:2px;margin-bottom:20px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;overflow:visible!important}#sidebar .art_title{margin:-20px 0;_margin:0}#sidebar .art_title img{margin:0 -80px 10px 0;z-index:200!important;_display:none}#sidebar .at_high img{margin:-25px -60px 10px -10px}#sidebar h3{clear:none;line-height:95%;font-size:24px}#sidebar h3 span{font-size:42px;line-height:42px}#sidebar h3 .highlight{color:#c30}#sidebar .art_title h3{padding-top:30px}#sidebar .at_high h3{margin-top:20px;padding:30px 10px 30px 10px;background-image:url('/images/bucket_bkgd_sky2.jpg');-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;color:#eef!important;margin-bottom:32px}#content .sideimage{margin-top:20px}#sidebar .sideimage{float:right}.bucket p{margin-bottom:0;color:#579}.bucket ul{clear:both;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;float:none;overflow:hidden}.bucket ul li{margin:0;padding:.5em}.bucket ul li.venue{padding:1.0em .5em;line-height:16px;color:#69a}.bucket ul a.title_link{font-weight:bold}.bucket ul span.viewscomments,.bucket ul a.author_link{color:#3bc}.bucket ul .even,.moregames ul li:nth-child(odd){background-color:#234}.bucket ul .odd,.moregames ul li:nth-child(even){background-color:#123}.bucket ul li.iconsmall{line-height:16px;min-height:20px}.bucket ul li.iconsmall img{vertical-align:middle;margin:-3px 10px 0 0;float:left}.trending{padding-right:0!important}.trending ul li{float:left;width:124px}.moregames img.sideimage{margin:42px 0 0 40px!important}.moregames img.avatar{float:left;margin-right:10px;vertical-align:middle}.moregames h4{margin-left:20px}.moregames .art_title_small h4{margin-left:0}ul.avatars_list{width:309px!important}.avatars_list li{font-family:"Arial Narrow",Arial;width:103px;float:left;text-align:center;font-size:11px;line-height:10px!important;overflow:hidden;padding:0!important;height:96px}.avatars_list li.iconsmall a img{display:block;float:none;margin:14px auto 5px auto}.groups_list li.iconsmall a img{margin:8px auto 5px auto}#sidebar div.newfeatures{margin:0 8px 20px 0}#sidebar div.newfeatures h4{font-size:16px;background:transparent url('../chrome/feature_check.gif') no-repeat top left;padding-left:30px;line-height:28px}
#sidebar ul.contentpromo li{padding:3px;margin:0}#sidebar ul.contentpromo li.odd{background-color:#111}#sidebar div.promo_home{background:url('../chrome/promo_bkgd_175.gif') no-repeat top left;width:175px;height:140px;margin:0;border:1px solid black;margin-top:10px}#sidebar div.promo_home p


用外文材料时，有些地方看不懂，就打虚线避过去。

   已经取得的一点成绩，使我得意忘形，我对本院的教学骨干们作了如下的描绘：

   何：空空洞洞，只懂抽象原则；

   郑：不学无术，不懂装懂；

   高：虽较聪明，也不怎样；

   石：倒挺钻研，但不懂外文。

   平时听到称他们为教学骨干就感到刺耳。认为在这些人领导下，本院肯定办不好，但一转念：没关系，还有王、吴、我和杨等(有的是右派份子，有的是严重右倾)有“真材实学”的人。他们是本院的希望。

   我瞧不起石，嫌他不懂外文。表面上也劝他抓紧自修，但当他学出成绩来，我又不安了。因为我本来就在懂外文这一点上比他强，他外文好了，我不就什么都不如他了吗?听李副院长说，学院让一部分教员脱产学外文，是要培养一批教授，我想大概是指高、刘等人，心里很不舒服。但又自己宽慰说：我的外文根基比他们强，他们工作又忙，总是赶不上我。我听说副院长在某部讲课效果不好，心里就舒服。他要给研究生开课，我就想：“准会意见一大堆”。结果事与愿违，研究生们反映他“理论高、分析好”，我就黯然若有所失，心想大概是这几个研究生水平太低，看不出问题。有一回黄盛气凌人地说：“郑讲课一塌糊涂，没学问就该再学习去，何必占讲台?”我听了就乐不可支。心想为什么石讲课总没有人说不好呢?有一次，个别学生说他某一段讲得乱点，心里才舒服。自思，我初出茅芦，第一炮就打响了，以后肯定会超过他们任何一个。每回讲课结束，总要对同学们交代：“从下次起，就要由我的石老师来接我的课，他的理论、政策水平和材料掌握都比我强，希望大家好好儿跟他学……。”我想，如果相形之下，我讲的课不如他，同学们也会体谅，如果他讲的竟不如我，同学们将会说：“某老师，了不起，青出于蓝。”……

   总之，在邪恶的个人名利思想指导之下的资产阶级治学之道，已经使我变成一个从每个毛孔里都散发出资本主义毒瘤的恶臭的人。与资产阶级治学道路相联系的，还有成体系的资产阶级政治观点。我决心要彻底暴露，争取大家的帮助，在这次运动中彻底烧透。

   来源： 《拔白旗、插红旗： 北京各高校双反运动大字报选》，北京： 人民出版社，1958年。

    [返回索引页面]

   Copyright (C)  2024  Marxist-Leninist-Maoist.

   Permission is granted to copy, distrib


(queryString);
    await _expectForwardEmailButtonVisible();

    await emailRobot.onTapForwardEmail();
    await _expectComposerViewVisible();

    await composerRobot.grantContactPermission();
    await _expectMobileEditorViewVisible();

    await _expectForwardEmailContentDisplayedCorrectly();
  }

  Future<void> _expectSearchViewVisible() async {
    await expectViewVisible($(SearchEmailView));
  }

  Future<void> _expectSearchResultEmailListVisible() async {
    await expectViewVisible($(#search_email_list_notification_listener));
  }

  Future<void> _expectForwardEmailButtonVisible() async {
    await expectViewVisible($(#forward_email_button));
  }

  Future<void> _expectComposerViewVisible() async {
    await expectViewVisible($(ComposerView));
  }

  Future<void> _expectMobileEditorViewVisible() async {
    await expectViewVisible($(#mobile_editor));
  }

  Future<void> _expectForwardEmailContentDisplayedCorrectly() async {
    ComposerController? composerController;
    await $(ComposerView)
      .which<ComposerView>((widget) {
        composerController = widget.controller;
        return true;
      })
      .$(MobileEditorView)
      .$(HtmlEditor)
      .$(InAppWebView).tap();

    await composerController?.htmlEditorApi?.requestFocusLastChild();

    final contentHtml = await composerController?.htmlEditorApi?.getText();

    expect(contentHtml, contains('Subject'));
    expect(contentHtml, contains('From'));
    expect(contentHtml, contains('To'));
    expect(contentHtml, contains('Cc'));
    expect(contentHtml, contains('Bcc'));
  }
}import 'package:tmail_ui_user/features/thread/presentation/widgets/email_tile_builder.dart';

import '../../base/base_test_scenario.dart';
import '../../models/provisioning_email.dart';
import '../../robots/thread_robot.dart';

class MarkSingleSelectedEmailAsStarScenario extends BaseTestScenario {
  const MarkSingleSelectedEmailAsStarScenario(super.$);

  @override
  Future<void> runTestLogic() async {
    const email = String.fromEnvironment('BASIC_AUTH_EMAIL');
    const starSubject = 'single selected star';

    final threadRobot = ThreadRobot($);

    await provisionEmail([
      ProvisioningEmail(toEmail: email, subject: starSubject, content: ''),
    ]);
    await $.pumpAndSettle(duration: const Duration(seconds: 2));

    await threadRobot.longPressEmailWithSubject(starSubject);
    await threadRobot.tapMarkAsStarAction();
    await _expectEmailWithSubjectIsStarred(starSubject);
  }

  Future<void> _expectEmailWithSubjectIsStarred(String subject) async {
    await expectViewVisible($(EmailTileBuilder).which<EmailTileBuilder>(
      (widget) => widget.presentationEmail.subject == subject
        && widget.presentationEmail.hasStarred
    ));
  }
}import 'package:flutter_test/flutter_test.dart';
import 'package:model/extensions/presentation_mailbox_extension.dart';
import 'package:model/mailbox/presentation_mailbox.dart';
import 'package:tmail_ui_user/features/base/widget/clean_messages_banner.dart';
import 'package:tmail_ui_user/features/mailbox/presentation/widgets/trailing_mailbox_item_widget.dart';
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';

import '../../base/base_test_scenario.dart';
import '../../models/provisioning_email.dart';
import '../../robots/mailbox_menu_robot.dart';
import '../../robots/thr


; 헕; 헕; 헕; 헕; ) HANGUL SYLLABLE HEOLT
D5D6;D5D6;1112 1165 11B5;D5D6;1112 1165 11B5; # (헖; 헖; 헖; 헖; 헖; ) HANGUL SYLLABLE HEOLP
D5D7;D5D7;1112 1165 11B6;D5D7;1112 1165 11B6; # (헗; 헗; 헗; 헗; 헗; ) HANGUL SYLLABLE HEOLH
D5D8;D5D8;1112 1165 11B7;D5D8;1112 1165 11B7; # (험; 험; 험; 험; 험; ) HANGUL SYLLABLE HEOM
D5D9;D5D9;1112 1165 11B8;D5D9;1112 1165 11B8; # (헙; 헙; 헙; 헙; 헙; ) HANGUL SYLLABLE HEOB
D5DA;D5DA;1112 1165 11B9;D5DA;1112 1165 11B9; # (헚; 헚; 헚; 헚; 헚; ) HANGUL SYLLABLE HEOBS
D5DB;D5DB;1112 1165 11BA;D5DB;1112 1165 11BA; # (헛; 헛; 헛; 헛; 헛; ) HANGUL SYLLABLE HEOS
D5DC;D5DC;1112 1165 11BB;D5DC;1112 1165 11BB; # (헜; 헜; 헜; 헜; 헜; ) HANGUL SYLLABLE HEOSS
D5DD;D5DD;1112 1165 11BC;D5DD;1112 1165 11BC; # (헝; 헝; 헝; 헝; 헝; ) HANGUL SYLLABLE HEONG
D5DE;D5DE;1112 1165 11BD;D5DE;1112 1165 11BD; # (헞; 헞; 헞; 헞; 헞; ) HANGUL SYLLABLE HEOJ
D5DF;D5DF;1112 1165 11BE;D5DF;1112 1165 11BE; # (헟; 헟; 헟; 헟; 헟; ) HANGUL SYLLABLE HEOC
D5E0;D5E0;1112 1165 11BF;D5E0;1112 1165 11BF; # (헠; 헠; 헠; 헠; 헠; ) HANGUL SYLLABLE HEOK
D5E1;D5E1;1112 1165 11C0;D5E1;1112 1165 11C0; # (헡; 헡; 헡; 헡; 헡; ) HANGUL SYLLABLE HEOT
D5E2;D5E2;1112 1165 11C1;D5E2;1112 1165 11C1; # (헢; 헢; 헢; 헢; 헢; ) HANGUL SYLLABLE HEOP
D5E3;D5E3;1112 1165 11C2;D5E3;1112 1165 11C2; # (헣; 헣; 헣; 헣; 헣; ) HANGUL SYLLABLE HEOH
D5E4;D5E4;1112 1166;D5E4;1112 1166; # (헤; 헤; 헤; 헤; 헤; ) HANGUL SYLLABLE HE
D5E5;D5E5;1112 1166 11A8;D5E5;1112 1166 11A8; # (헥; 헥; 헥; 헥; 헥; ) HANGUL SYLLABLE


import re

PORT_SPEC = re.compile(
    "^"  # Match full string
    "("  # External part
    r"(\[?(?P<host>[a-fA-F\d.:]+)\]?:)?"  # Address
    r"(?P<ext>[\d]*)(-(?P<ext_end>[\d]+))?:"  # External range
    ")?"
    r"(?P<int>[\d]+)(-(?P<int_end>[\d]+))?"  # Internal range
    "(?P<proto>/(udp|tcp|sctp))?"  # Protocol
    "$"  # Match full string
)

def add_port_mapping(port_bindings, internal_port, external):
    if internal_port in port_bindings:
        port_bindings[internal_port].append(external)
    else:
        port_bindings[internal_port] = [external]

def add_port(port_bindings, internal_port_range, external_range):
    if external_range is None:
        for internal_port in internal_port_range:
            add_port_mapping(port_bindings, internal_port, None)
    else:
        ports = zip(internal_port_range, external_range)
        for internal_port, external_port in ports:
            add_port_mapping(port_bindings, internal_port, external_port)

def build_port_bindings(ports):
    port_bindings = {}
    for port in ports:
        internal_port_range, external_range = split_port(port)
        add_port(port_bindings, internal_port_range, external_range)
    return port_bindings

def _raise_invalid_port(port):
    raise ValueError('Invalid port "%s", should be '
                     '[[remote_ip:]remote_port[-remote_port]:]'
                     'port[/protocol]' % port)

def port_range(start, end, proto, randomly_available_port=False):
    if not start:
        return start
    if not end:
        return [start + proto]
    if randomly_available_port:
        return [f"{start}-{end}{proto}"]
    return [str(port) + proto for port in range(int(start), int(end) + 1)]

def split_port(port):
    if hasattr(port, 'legacy_repr'):
        # This is the worst hack, but it prevents a bug in Compose 1.14.0
        # https://github.com/docker/docker-py/issues/1668
        # TODO: remove once fixed in Compose stable
        port = port.legacy_repr()
    port = str(port)
    match = PORT_SPEC.match(port)
    if match is None:
        _raise_invalid_port(port)
    parts = match.groupdict()

    host = parts['host']
    proto = parts['proto'] or ''
    internal = port_range(parts['int'], parts['int_end'], proto)
    external = port_range(
        parts['ext'], parts['ext_end'], '', len(internal) == 1)

    if host is None:
        if external is not None and len(internal) != len(external):
            raise ValueError('Port ranges don\'t match in length')
        return internal, external
    else:
        if not external:
            external = [None] * len(internal)
        elif len(internal) != len(external):
            raise ValueError('Port ranges don\'t match in length')
        return internal, [(host, ext_port) for ext_port in external]


 is 0.71em */
}

mi {
    font-style: italic;
    -webkit-padding-end: 0.1em;
}
msub > mi:first-child, msubsup > mi:first-child {
    -webkit-padding-end: 0;
}
msubsup > mi:first-child + * + * {
    -webkit-margin-start: 0.14em; /* This is larger than 0.1em because the child's font-size is smaller than the <msubsup>'s. */
}

/* FIXME: For a RenderMathMLOperator's margin-start and margin-end, or for a MathML "embellished operator", check the operator's lspace and rspace attributes,
   and the MathML operator dictionary. */
math > mo, mrow > mo, msqrt > mo, mtd > mo {
    -webkit-margin-start: 0.2em;
    -webkit-margin-end: 0.2em;
}
math > mo:first-child, mrow > mo:first-child, msqrt > mo:first-child, mtd > mo:first-child,
math > mo:last-child, mrow > mo:last-child, msqrt > mo:last-child, mtd > mo:last-child {
    -webkit-margin-start: 0.1em;
    -webkit-margin-end: 0.1em;
}

mroot {
    position: relative;
}
mroot > * + * {
    font-size: 0.75em;
    position: absolute;
    left: 0;
    top: 0;
    padding-right: 0.4em;
    padding-left: 0.2em;
    padding-bottom: 0.35em;
}

math[mathvariant="normal"], mstyle[mathvariant="normal"], mo[mathvariant="normal"], mn[mathvariant="normal"], mi[mathvariant="normal"], mtext[mathvariant="normal"], mspace[mathvariant="normal"], ms[mathvariant="normal"] {
    font-style: normal;
    font-weight: normal;
}

math[mathvariant="bold"], mstyle[mathvariant="bold"], mo[mathvariant="bold"], mn[mathvariant="bold"], mi[mathvariant="bold"], mtext[mathvariant="bold"], mspace[mathvariant="bold"], ms[mathvariant="bold"] {
    font-style: normal;
    font-weight: bold;
}

math[mathvariant="italic"], mstyle[mathvariant="italic"], mo[mathvariant="italic"], mn[mathvariant="italic"], mi[mathvariant="italic"], mtext[mathvariant="italic"], mspace[mathvariant="italic"], ms[mathvariant="italic"] {
    font-style: italic;
    font-weight: normal;
}

math[mathvariant="bold-italic"], mstyle[mathvariant="bold-italic"], mo[mathvariant="bold-italic"], mn[mathvariant="bold-italic"], mi[mathvariant="bold-italic"], mtext[mathvariant="bold-italic"], mspace[mathvariant="bold-italic"], ms[mathvariant="bold-italic"] {
    font-weight: bold;
    font-style: italic;
}

math[mathsize="small"], mstyle[mathsize="small"], mo[mathsize="small"], mn[mathsize="small"], mi[mathsize="small"], mtext[mathsize="small"], mspace[mathsize="small"], ms[mathsize="small"] {
    font-size: 0.75em;
}

math[mathsize="normal"], mstyle[mathsize="normal"], mo[mathsize="normal"], mn[mathsize="normal"], mi[mathsize="normal"], mtext[mathsize="normal"], mspace[mathsize="normal"], ms[mathsize="normal"] {
    font-size: 1em;
}

math[mathsize="big"], mstyle[mathsize="big"], mo[mathsize="big"], mn[mathsize="big"], mi[mathsize="big"], mtext[


	// =============================================================
	// from lcode.h
	// =============================================================

	// =============================================================
	// from lparser.c
	// =============================================================

	static final boolean vkisvar(final int k) {
		return (VLOCAL <= (k) && (k) <= VINDEXED);
	}

	static final boolean vkisinreg(final int k) {
		return ((k) == VNONRELOC || (k) == VLOCAL);
	}

	static class expdesc {
		int k; // expkind, from enumerated list, above
		static class U { // originally a union
			short ind_idx; // index (R/K)
			short ind_t; // table(register or upvalue)
			short ind_vt; // whether 't' is register (VLOCAL) or (UPVALUE)
			private LuaValue _nval;
			int info;
			public void setNval(LuaValue r) {
				_nval = r;
			}
			public LuaValue nval() {
				return (_nval == null? LuaInteger.valueOf(info): _nval);
			}
		};
		final U u = new U();
		final IntPtr t = new IntPtr(); /* patch list of `exit when true' */
		final IntPtr f = new IntPtr(); /* patch list of `exit when false' */
		void init( int k, int i ) {
			this.f.i = NO_JUMP;
			this.t.i = NO_JUMP;
			this.k = k;
			this.u.info = i;
		}

		boolean hasjumps() {
			return (t.i != f.i);
		}

		boolean isnumeral() {
			return (k == VKNUM && t.i == NO_JUMP && f.i == NO_JUMP);
		}

		public void setvalue(expdesc other) {
			this.f.i = other.f.i;
			this.k = other.k;
			this.t.i = other.t.i;
			this.u._nval = other.u._nval;
			this.u.ind_idx = other.u.ind_idx;
			this.u.ind_t = other.u.ind_t;
			this.u.ind_vt = other.u.ind_vt;
			this.u.info = other.u.info;
		}
	}

	/* description of active local variable */
	static class Vardesc {
		final short idx;  /* variable index in stack */
		Vardesc(int idx) {
			this.idx = (short) idx;
		}
	};

	/* description of pending goto statements and label statements */
	static class Labeldesc {
		LuaString name;  /* label identifier */
		int pc;  /* position in code */
		int line;  /* line where it appeared */
		short nactvar;  /* local level where it appears in current block */
		public Labeldesc(LuaString name, int pc, int line, short nactvar) {
			this.name = name;
			this.pc = pc;
			this.line = line;
			this.nactvar = nactvar;
		}
	};

	/* dynamic structures used by the parser */
	static class Dyndata {
		Vardesc[] actvar;  /* list of active local variables */
		int n_actvar = 0;
		Labeldesc[] gt;  /* list of pending gotos */
		int n_gt = 0;
		Labeldesc[] label;   /* list of active labels */
		int n_label = 0;
	};

	boolean hasmultret(int k) {
		return ((k) == VCALL || (k) == VVARARG);
	}

	/*----------------------------------------------------------------------
	name		args	description
	--


            Assert.AreEqual(test[j], (long)(l[j] >> (int)r[j]));
                }

                l = rng.NextLong3();
                r = rng.NextLong3(32, 63);

                test = maxmath.shra(l, r);

                for (int j = 0; j < 3; j++)
                {
                    Assert.AreEqual(test[j], (long)(l[j] >> (int)r[j]));
                }

                l = rng.NextLong3();
                r = 0;

                test = maxmath.shra(l, r);

                for (int j = 0; j < 3; j++)
                {
                    Assert.AreEqual(test[j], (long)(l[j] >> (int)r[j]));
                }
            }
        }

        [Test]
        public static void _long4()
        {
            Random64 rng = Random64.New;

            for (int i = 0; i < 8; i++)
            {
                long4 l = rng.NextLong4();
                long4 r = rng.NextLong4(0, 64);

                long4 test = maxmath.shra(l, r);

                for (int j = 0; j < 4; j++)
                {
                    Assert.AreEqual(test[j], (long)(l[j] >> (int)r[j]));
                }

                l = rng.NextLong4();
                r = rng.NextLong4(0, 33);

                test = maxmath.shra(l, r);

                for (int j = 0; j < 4; j++)
                {
                    Assert.AreEqual(test[j], (long)(l[j] >> (int)r[j]));
                }

                l = rng.NextLong4();
                r = rng.NextLong4(32, 63);

                test = maxmath.shra(l, r);

                for (int j = 0; j < 4; j++)
                {
                    Assert.AreEqual(test[j], (long)(l[j] >> (int)r[j]));
                }

                l = rng.NextLong4();
                r = 0;

                test = maxmath.shra(l, r);

                for (int j = 0; j < 4; j++)
                {
                    Assert.AreEqual(test[j], (long)(l[j] >> (int)r[j]));
                }
            }
        }
    }
}


9",r:"2.9",key:"1n0dlu"}],["circle",{cx:"6",cy:"5",r:"3",key:"151irh"}]]),c2=(0,r.Z)("HandHeart",[["path",{d:"M11 14h2a2 2 0 1 0 0-4h-3c-.6 0-1.1.2-1.4.6L3 16",key:"1ifwr1"}],["path",{d:"m7 20 1.6-1.4c.3-.4.8-.6 1.4-.6h4c1.1 0 2.1-.4 2.8-1.2l4.6-4.4a2 2 0 0 0-2.75-2.91l-4.2 3.9",key:"17abbs"}],["path",{d:"m2 15 6 6",key:"10dquu"}],["path",{d:"M19.5 8.5c.7-.7 1.5-1.6 1.5-2.7A2.73 2.73 0 0 0 16 4a2.78 2.78 0 0 0-5 1.8c0 1.2.8 2 1.5 2.8L16 12Z",key:"1h3036"}]]),c4=(0,r.Z)("HandHelping",[["path",{d:"M11 12h2a2 2 0 1 0 0-4h-3c-.6 0-1.1.2-1.4.6L3 14",key:"1j4xps"}],["path",{d:"m7 18 1.6-1.4c.3-.4.8-.6 1.4-.6h4c1.1 0 2.1-.4 2.8-1.2l4.6-4.4a2 2 0 0 0-2.75-2.91l-4.2 3.9",key:"uospg8"}],["path",{d:"m2 13 6 6",key:"16e5sb"}]]),c5=(0,r.Z)("HandMetal",[["path",{d:"M18 12.5V10a2 2 0 0 0-2-2v0a2 2 0 0 0-2 2v1.4",key:"7eki13"}],["path",{d:"M14 11V9a2 2 0 1 0-4 0v2",key:"94qvcw"}],["path",{d:"M10 10.5V5a2 2 0 1 0-4 0v9",key:"m1ah89"}],["path",{d:"m7 15-1.76-1.76a2 2 0 0 0-2.83 2.82l3.6 3.6C7.5 21.14 9.2 22 12 22h2a8 8 0 0 0 8-8V7a2 2 0 1 0-4 0v5",key:"t1skq1"}]]),c3=(0,r.Z)("HandPlatter",[["path",{d:"M12 3V2",key:"ar7q03"}],["path",{d:"M5 10a7.1 7.1 0 0 1 14 0",key:"1t9y3n"}],["path",{d:"M4 10h16",key:"img6z1"}],["path",{d:"M2 14h12a2 2 0 1 1 0 4h-2",key:"loyjft"}],["path",{d:"m15.4 17.4 3.2-2.8a2 2 0 0 1 2.8 2.9l-3.6 3.3c-.7.8-1.7 1.2-2.8 1.2h-4c-1.1 0-2.1-.4-2.8-1.2L5 18",key:"1rixiy"}],["path",{d:"M5 14v7H2",key:"3mujks"}]]),c6=(0,r.Z)("Hand",[["path",{d:"M18 11V6a2 2 0 0 0-2-2v0a2 2 0 0 0-2 2v0",key:"aigmz7"}],["path",{d:"M14 10V4a2 2 0 0 0-2-2v0a2 2 0 0 0-2 2v2",key:"1n6bmn"}],["path",{d:"M10 10.


ithoTestRule.render { component }
    info.clear()
    caller.updateStateWithTransition()
    backgroundLayoutLooperRule.runToEndOfTasksSync()
    assertThat(LifecycleStep.getSteps(info))
        .describedAs("Should call the lifecycle methods in expected order")
        .containsExactly(
            LifecycleStep.ON_UPDATE_STATE_WITH_TRANSITION,
            LifecycleStep.ON_CREATE_TREE_PROP,
            LifecycleStep.ON_CALCULATE_CACHED_VALUE,
            LifecycleStep.ON_CREATE_LAYOUT)
  }

  @Test
  fun lifecycle_dispatchEventWithoutAnnotation_shouldCallOnEventWithoutAnnotation() {
    val info: MutableList<StepInfo> = ArrayList()
    val caller = LayoutSpecLifecycleTesterSpec.Caller()
    val component =
        LayoutSpecLifecycleTester.create(lithoTestRule.context).steps(info).caller(caller).build()
    lithoTestRule.render { component }
    info.clear()
    val eventDispatched = EventWithoutAnnotation(1, true, "hello")
    caller.dispatchEventWithoutAnnotation(eventDispatched)
    val eventReceived = caller.eventWithoutAnnotation
    assertThat(eventReceived).isNotNull
    assertThat(eventDispatched.count).isSameAs(eventReceived?.count)
    assertThat(eventDispatched.isDirty).isSameAs(eventReceived?.isDirty)
    assertThat(eventDispatched.message).isSameAs(eventReceived?.message)
  }
}
/*
 * Copyright (c) Meta Platforms, Inc. and affiliates.
 *
 * Licensed 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.
 */

package com.facebook.litho

import android.graphics.Rect
import com.facebook.litho.testing.LithoTestRule
import com.facebook.litho.testing.Whitebox
import com.facebook.litho.testing.testrunner.LithoTestRunner
import com.facebook.litho.widget.LayoutSpecLifecycleTester
import com.facebook.litho.widget.MountSpecLifecycleTester
import java.util.ArrayList
import org.assertj.core.api.Assertions.assertThat
import org.junit.After
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.robolectric.annotation.LooperMode

@RunWith(LithoTestRunner::class)
@LooperMode(LooperMode.Mode.LEGACY)
class LithoVisibilityEventsControllerTest {

  @JvmField @Rule val lithoTestRule = LithoTestRule()
  private lateinit var lithoView: LithoView
  private lateinit var component: LayoutSpecLifecycleTester
  private lateinit var mountableComponent: MountSpecLifecycleTester
  private lateinit var lithoLifecycleProviderDelegate: LithoVisibilityEventsControllerDelegate
  private lateinit var steps: MutableList<LifecycleStep.StepInfo>
  private lateinit var lifecycleTracker: LifecycleTracker

  @Before
  fun setup() {
    val c = lithoTestRule.context
    lithoLifecycleProviderDelegate = LithoVisibilityEventsControllerDelegate()
    steps = ArrayList<LifecycleStep.StepInfo>()
    lifecycleTracker = LifecycleTracker()
    component = LayoutSpecLifecycleTester.create(c).widthPx(10).heightPx(5).steps(steps).build()
    mountableComponent =
        MountSpecLifecycleTester


/*
 * Expanding strings
 */
/* $Id$ */

#define X_EXTRA		8	/* this many extra bytes in X string */

#if 0				/* Usage */
	XString xs;
	char *xp;

	Xinit(xs, xp, 128, ATEMP); /* allocate initial string */
	while ((c = generate()) {
		Xcheck(xs, xp);	/* expand string if neccessary */
		Xput(xs, xp, c); /* add character */
	}
	return Xclose(xs, xp);	/* resize string */
/*
 * NOTE:
 *     The Xcheck and Xinit macros have a magic + X_EXTRA in the lengths.
 *     This is so that you can put up to X_EXTRA characters in a XString
 *     before calling Xcheck. (See yylex in lex.c)
 */
#endif /* 0 */

typedef struct XString {
	char   *end, *beg;	/* end, begin of string */
	size_t	len;		/* length */
	Area	*areap;		/* area to allocate/free from */
} XString;

typedef char * XStringP;

/* initialize expandable string */
#define	Xinit(xs, xp, length, area) do { \
			(xs).len = length; \
			(xs).areap = (area); \
			(xs).beg = alloc((xs).len + X_EXTRA, (xs).areap); \
			(xs).end = (xs).beg + (xs).len; \
			xp = (xs).beg; \
		} while (0)

/* stuff char into string */
#define	Xput(xs, xp, c)	(*xp++ = (c))

/* check if there are at least n bytes left */
#define	XcheckN(xs, xp, n) do { \
		    int more = ((xp) + (n)) - (xs).end; \
		    if (more > 0) \
			xp = Xcheck_grow_(&xs, xp, more); \
		} while (0)

/* check for overflow, expand string */
#define Xcheck(xs, xp)	XcheckN(xs, xp, 1)

/* free string */
#define	Xfree(xs, xp)	afree((void*) (xs).beg, (xs).areap)

/* close, return string */
#define	Xclose(xs, xp)	(char*) aresize((void*)(xs).beg, \
					(size_t)((xp) - (xs).beg), (xs).areap)
/* begin of string */
#define	Xstring(xs, xp)	((xs).beg)

#define Xnleft(xs, xp) ((xs).end - (xp))	/* may be less than 0 */
#define	Xlength(xs, xp) ((xp) - (xs).beg)
#define Xsize(xs, xp) ((xs).end - (xs).beg)
#define	Xsavepos(xs, xp) ((xp) - (xs).beg)
#define	Xrestpos(xs, xp, n) ((xs).beg + (n))

char *	Xcheck_grow_	ARGS((XString *xsp, char *xp, int more));

/*
 * expandable vector of generic pointers
 */

typedef struct XPtrV {
	void  **cur;		/* next avail pointer */
	void  **beg, **end;	/* begin, end of vector */
} XPtrV;

#define	XPinit(x, n) do { \
			register void **vp__; \
			vp__ = (void**) alloc(sizeofN(void*, n), ATEMP); \
			(x).cur = (x).beg = vp__; \
			(x).end = vp__ + n; \
		    } while (0)

#define	XPput(x, p) do { \
			if ((x).cur >= (x).end) { \
				int n = XPsize(x); \
				(x).beg = (void**) aresize((void*) (x).beg, \
						   sizeofN(void*, n*2), ATEMP); \
				(x).cur = (x).beg + n; \
				(x).end = (x).cur + n; \
			} \
			*(x).cur++ = (p); \
		} while (0)

#define	XPptrv(x)	((x).beg)
#define	XPsize(x)	((x).cur - (x).beg)

#define	XPclose(x)	(void**) aresize((void*)(x).beg, \
					 sizeofN(void*, XPsize(x)), ATEMP)

#define	XPfree(x)	afree((void*) (x).beg, ATEMP)


超参数优化 [目录](#content)

策略一：粗糙到精细 [目录](#content)

粗糙到精细化的思想：
> - First stage: only a few epochs to get rough idea of what params work
> - Second stage: longer running time, finer search
>     … (repeat as necessary)
> - 最后选出一个表现最好的参数

coarse search

finer search

策略二：网格搜索 [目录](#content)

使用一个固定的步长，在学习率和正则化系数上每一步取一个值

但是，**其性能不如随机取值好**

前提条件：在超参数优化过程中，经常发生的是，**一个超参数的重要性会远远高于另一个**

具体原因没有听懂，未知待解！

观察损失函数变化形式 [目录](#content)

	损失函数的变化趋势并不是期望中的指数化，而有点接近于线性函数——可能原因：学习率太低了

	一开始有一个很高的平稳值，然后在某一个时间点，突然开始下降——可能原因——初始值选的不好。

一个错误的初始值会让梯度值在一开始就接近于0，使得损失函数在一开始几乎没有下降，直到运动到某一个点的梯度才有了明显的变化

观察准确率变化形式 [目录](#content)

评估参数更新比例 [目录](#content)

# `dtoDescriptionTypeOverrides.jsonc`
Override a DTO's field's type based on its description:
```json
{
  "This field is a List of List of Double.": {
    "type": "array",
    "items": {
      "type": "array",
      "items": {
        "type": "number",
        "format": "double"
      }
    }
  }
}
```

# `dtoEnums.


[ProtoMember(92)]
		public string Message { get; set; }

	}

	[ResponseType(nameof(ObjectUnLockAResponse))]
	[Message(InnerMessage.ObjectUnLockARequest)]
	[ProtoContract]
	public partial class ObjectUnLockARequest: ProtoObject, IActorRequest
	{
		[ProtoMember(90)]
		public int RpcId { get; set; }

		[ProtoMember(1)]
		public long Key { get; set; }

		[ProtoMember(2)]
		public long OldInstanceId { get; set; }

		[ProtoMember(3)]
		public long InstanceId { get; set; }

	}

	[ResponseType(nameof(G2R_KickOutPlayerAResponse))]
	[Message(InnerMessage.R2G_KickOutPlayerARequest)]
	[ProtoContract]
	public partial class R2G_KickOutPlayerARequest: ProtoObject, IActorRequest
	{
		[ProtoMember(90)]
		public int RpcId { get; set; }

		[ProtoMember(1)]
		public string Account { get; set; }

	}

	public static partial class InnerMessage
	{
		 public const ushort A2M_ReloadAResponse = 20002;
		 public const ushort G2G_LockARequest


Data data) {
		String name = null;
		String dataTypeName = data.getDataType().getName();
		if (dataTypeName.equals("cfstringStruct")) {
			Data stringPointerField = data.getComponent(2);
			if (stringPointerField != null) {
				Object value = stringPointerField.getValue();
				if (value instanceof Address) {
					Address stringAddress = (Address) stringPointerField.getValue();
					Data stringData = getDataAt(stringAddress);
					name = "sp_" + (String) stringData.getValue();
				}
			}
		}
		else {
			name = data.getLabel();
			if (name != null) {
				name = "p_" + name;
			}
		}
		return name;
	}

}
/* ###
 * IP: GHIDRA
 * REVIEWED: YES
 *
 * Licensed 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.
 */
//Makes functions out of a run of selected ARM or Thumb function pointers
//@category ARM

import ghidra.app.plugin.core.clear.ClearFlowAndRepairCmd;
import ghidra.app.script.GhidraScript;
import ghidra.program.model.address.Address;
import ghidra.program.model.address.AddressIterator;
import ghidra.program.model.data.Pointer32DataType;
import ghidra.program.model.lang.Register;
import ghidra.program.model.listing.Listing;
import ghidra.program.model.symbol.Reference;

import java.math.BigInteger;

public class ArmThumbFunctionTableScript extends GhidraScript
{
   @Override
public void
   run() throws Exception
   {
      Register tmode = currentProgram.getProgramContext().getRegister("TMode");
      Listing lst = currentProgram.getListing();
      if (currentSelection != null)
      {
         AddressIterator addrIter = currentSelection.getAddresses(true);

         while (addrIter.hasNext())
         {
            Address currAddr = addrIter.next();
            // Only look at dword-aligned boundaries for function pointers
            if ((currAddr.getOffset() & 3) != 0)
            {
               continue;
            }
            // Skip over entries with value 0 (null pointers)
            long dstOffset = getInt(currAddr);
            if (dstOffset == 0)
            {
               continue;
            }
            // Clear any defined data before applying our new type
            if (!lst.isUndefined(currAddr,currAddr.add(3)))
            {
               clearListing(currAddr, currAddr.add(3));
            }
            // Apply a pointer data type
            createData(currAddr, new Pointer32DataType());
            // Now check out what we're pointing to
            Reference ref = getReferencesFrom(currAddr)[0];
            Address refAddr = ref.getToAddress();
            if (!currentProgram.getMemory().contains(refAddr))
            {
               continue;
            }
            // Decide whether this is a pointer to an ARM or Thumb function
            BigInteger tmodeValue;
            if ((dstOffset & 1) == 1)
            {
               refAddr = refAddr.subtract(1);
               tmodeValue = BigInteger.ONE;
            }
            else
            {
               // ARM function pointers should always be dword-aligned
               if ((dstOffset & 3) != 0)
               {
                  println("Warning: Invalid function pointer to " + refAddr);
                  continue;
               }
               tmodeValue =


specs)])
        elseif (robot.classe == "HUNTER") then
            local specs = {253, 254, 255}
            robot:SetSpecId(specs [math.random(1, #specs)])
        elseif (robot.classe == "MAGE") then
            local specs = {62, 63, 64}
            robot:SetSpecId(specs [math.random(1, #specs)])
        elseif (robot.classe == "MONK") then
            local specs = {268, 269, 270}
            robot:SetSpecId(specs [math.random(1, #specs)])
        elseif (robot.classe == "PALADIN") then
            local specs = {65, 66, 70}
            robot:SetSpecId(specs [math.random(1, #specs)])
        elseif (robot.classe == "PRIEST") then
            local specs = {256, 257, 258}
            robot:SetSpecId(specs [math.random(1, #specs)])
        elseif (robot.classe == "ROGUE") then
            local specs = {259, 260, 261}
            robot:SetSpecId(specs [math.random(1, #specs)])
        elseif (robot.classe == "SHAMAN") then
            local specs = {262, 263, 264}
            robot:SetSpecId(specs [math.random(1, #specs)])
        elseif (robot.classe == "WARLOCK") then
            local specs = {265, 266,


re/doc/libapt-pkg6.0/copyright`)

- `GPL-2`
- `GPLv2+`

Source:

```console
$ apt-get source -qq --print-uris apt=2.4.14
'http://archive.ubuntu.com/ubuntu/pool/main/a/apt/apt_2.4.14.dsc' apt_2.4.14.dsc 2801 SHA512:b1b8ce83cead480ab2c6fa2cbc9ed7384ab9d1dbcca437b96947653f16e7ef96df7d04269db20fa915325033845f5aaf7429f35741ada18e0a9b3b0cbf285cc9
'http://archive.ubuntu.com/ubuntu/pool/main/a/apt/apt_2.4.14.tar.xz' apt_2.4.14.tar.xz 2323176 SHA512:16c3eee24d40d94e9e11f70002564331a35373db693f75cfefa028767b9bcd80307dda99c52953173d575ba6724fe7a7fb37724eb2dd44bf87db17ff36a94ef8
```

### `dpkg` source package: `attr=1:2.5.1-1build1`

Binary Packages:

- `libattr1:amd64=1:2.5.1-1build1`

Licenses: (parsed from: `/usr/share/doc/libattr1/copyright`)

- `GPL-2`
- `GPL-2+`
- `LGPL-2+`
- `LGPL-2.1`

Source:

```console
$ apt-get source -qq --print-uris attr=1:2.5.1-1build1
'http://archive.ubuntu.com/ubuntu/pool/main/a/attr/attr_2.5.1-1build1.dsc' attr_2.5.1-1build1.dsc 2134 SHA512:4beeec510cf7976a3b2c0de3b90974ef03886b3a98ccb2b74f6278ed988727af3a0fa432d86aefd3bdb4bc50e29b3351f11fd892512407203f3e61636290ae15
'http://archive.ubuntu.com/ubuntu/pool/main/a/attr/attr_2.5.1.orig.tar.xz' attr_2.5.1.orig.tar.xz 318188 SHA512:9e5555260189bb6ef2440c76700ebb813ff70582eb63d446823874977307d13dfa3a347dfae619f8866943dfa4b24ccf67dadd7e3ea2637239fdb219be5d2932
'http://archive.ubuntu.com/ubuntu/pool/main/a/attr/attr_2.5.1.orig.tar.xz.asc' attr_2.5.1.orig.tar.xz.asc 833 SHA512:be4f3629ef66bd400bcdeaf8b6b1564dc729472a514d59fb4909a30f3269711dedea16002283e9aabbf83c374e0a3d70bc00f1136da0fed66a8184acdfd7e78f
'http://archive.ubuntu.com/ubuntu/pool/main/a/attr/attr_2.5.1-1build1.debian.tar.xz' attr_2.5.1-1build1.debian.tar.xz 28032 SHA512:c9d0869a3bb9f8019e6764fee3a78d8b1b9a3cdb37968aac19a9a7e7bbeeaadcbad86d5363ce3b0e26b5a178a4d446e4097d095e17b7a6d7f3e595d07176675c
```

### `dpkg` source package: `audit=1:3.0.7-1build1`


味を表すフィールドに用いる。（例を参照）
- 設定後に戻す必要が無いような場合には、本関数より各種マニピュレータを使用した方が便利だろう。

## 例
```cpp example
#include <iostream>

int main()
{
  // (1) の形式
  // bool をアルファベット形式で出力
  std::ios_base::fmtflags old1 = std::cout.setf(std::ios_base::boolalpha);
  std::cout << true << '\n';
  std::cout.flags(old1);

  // (2) の形式
  // 16 進数に設定して出力
  std::ios_base::fmtflags old2 = std::cout.setf(std::ios_base::hex, std::ios_base::basefield);
  std::cout << 100 << '\n';
  std::cout.flags(old2);

  // マニピュレータを使用して上記とほぼ等価の設定をした例（ただし、設定が戻っているわけでは無い）
  std::cout << std::boolalpha << true << std::noboolalpha << '\n';
  std::cout << std::hex << 100 << std::dec << '\n';
}
```
* std::hex[link ../hex.md]
* std::dec[link ../dec.md]
* std::noboolalpha[link ../noboolalpha.md]
* std::ios_base[link ../ios_base.md]
* setf[color ff0000]
* flags[link flags.md]
* fmtflags[link type-fmtflags.md]
* hex[link type-fmtflags.md]
* boolalpha[link type-fmtflags.md]

### 出力
```
true
64
true
64
```

## バージョン
## 言語
- C++98

### 処理系
- [Clang](/implementation.md#clang): 3.0 [mark verified], 3.1 [mark verified], 3.2 [mark verified], 3.3 [mark verified], 3.4 [mark verified], 3.5.0 [mark verified], 3.6.0 [mark verified], 3.7.0 [mark verified], 3.8.0 [mark verified]
- [GCC](/implementation.md#gcc): 4.3.6 [mark verified], 4.4.7 [mark verified], 4.5.4 [mark verified], 4.6.4 [mark verified], 4.7.3 [mark verified], 4.8.1 [mark verified], 4.8.2 [mark verified], 4.9.0 [mark verified], 4.9.1 [mark verified], 4.9.2 [mark verified], 5.1.0 [mark verified], 5.2.0 [mark verified], 6.0.0 [mark verified]
- [ICC](/implementation.md#icc): ??
- [Visual C++](/implementation.md#visual_cpp): ??

## 参照
- [`ios_base`](../ios_base.md)`::`[`fmtflags`](type-fmtflags.md)
- [`ios_base`](../ios_base.md)`::`[`flags`](flags.md)
- [`ios_base`](../ios_base.md)`::`[`unsetf`](unsetf.md)
# iword
* ios[meta header]
* function[meta id-type]
* std[meta namespace]
* ios_base[meta class]

```cpp
long& iword(int idx);
```

## 概要
`long` 型の私用記憶域への参照を取得する。

## 効果
`idx` で指定した記憶域がまだ確保されていなかった場合、新た


igration(message: string, queryRunner?: QueryRunner): any {
        this.log("debug", message, queryRunner)
    }

    logQuery(query: string, parameters?: any[], queryRunner?: QueryRunner): any {
        this.log("debug", "query" + ": " + LoggerAdapter.sql(query, parameters));
    }

    logQueryError(error: string, query: string, parameters?: any[], queryRunner?: QueryRunner): any {
        this.log("error", `query failed: ` + LoggerAdapter.sql(query, parameters));
        this.log("error", `error:` + error);
    }

    logQuerySlow(time: number, query: string, parameters?: any[], queryRunner?: QueryRunner): any {
        this.log("warn", `query is slow: ` + LoggerAdapter.sql(query, parameters));
        this.log("warn", `execution time: ` + time);
    }

    logSchemaBuild(message: string, queryRunner?: QueryRunner): any {
        this.log("debug", message)
    }
}
import {
  Component,
  EventEmitter,
  OnInit,
  Output
  } from '@angular/core';
import { Ingredient } from 'src/app/shared/model/ingredient.model';

@Component({
  selector: 'app-shopping-list',
  templateUrl: './shopping-list.component.html',
  styleUrls: ['./shopping-list.component.scss']
})
export class ShoppingListComponent implements OnInit {

  ingredient: Ingredient;

  @Output() ingredientSelected = new EventEmitter<Ingredient>();

  public ingredients: Ingredient[] = [
    new Ingredient('Apples', 5),
    new Ingredient('Oranges', 10),
    new Ingredient('Grapes', 1)
  ];

  constructor() { }

  ngOnInit() {
  }

  /**
   * onIngredientAdded
   */
  public onIngredientAdded(newIngredient: Ingredient) {
    this.ingredients.push(newIngredient);
  }

  /**
   * selectItem(item)
   */
  public selectItem(item) {
    this.ingredientSelected.emit(item)
  }
}
/// <reference path="../../typings.d.ts" />

// Name   : ハッシュ関数 WebCrypto ラッパークラス
// License: MIT License
// Author : pine613<https://github.com/pine613>
// Copyright (C) 2014 Pine Mizune.

// Web Cryptography API (Draft) を利用
// http://www.w3.org/TR/WebCryptoAPI/
// https://developer.mozilla.org/en-US/docs/Web/API/Window.crypto
// http://msdn.microsoft.com/en-us/library/ie/dn302328(v=vs.85).aspx

import _ = require('underscore');

import converter = require('./utf8-converter');

/**
    * メッセージダイジェスト関係の親クラス
    * 利用する際は、各アルゴリズムの派生クラスを利用すること
    */
export class WebCryptoDigest {
    public constructor(private algorithmName: string) { }

    /**
        * ハッシュをバイト配列で生成する
        */
    public digest(data: ArrayBuffer, cb: (hash: ArrayBuffer) => void): void;
    public digest(data: string, cb: (hash: ArrayBuffer) => void): void;
    public digest(data: any, cb: (hash: ArrayBuffer) => void): void {
        if (_.isString(data)) {
            data = converter.Utf8Converter.StringToArrayBuffer(data);
        }

        window.crypto.subtle.digest({ name: this.algorithmName }, data)
            .then(hash => {
                cb(hash);
            });
    }

    /**
        * ハッシュを16進数文字列で生成する
        * 結果はコールバック関数を用いて取得する


"Přetáčet",
    ["Go to"] = "Jdi",
    ["Dodge"] = "Uhnout",
    ["Chest"] = "Hrudník",
    ["Platinum"] = "Platina",
    ["Save data"] = "Uložit nastavení",
    ["Critical Miss"] = "Vedle",
    ["Saving..."] = "Ukládám...",
    ["Women"] = "Ženy",
    ["Treasure"] = "Poklad",
    ["Tap"] = "Klepnout",
    ["Dead zone"] = "Mrtvá zóna",
    ["Graphic designer"] = "Grafický Designér",
    ["Kill Assist"] = "Asistence zabití",
    ["Anti-aliasing"] = "Antialiasing",
    ["Font"] = "Písmo",
    ["Sell"] = "Prodat",
    ["Die"] = "Zemřít",
    ["Model detail"] = "Kvalita modelu",
    ["Build"] = "Stavět",
    ["Ear"] = "Ucho",
    ["Credits"] = "Autoři",
    ["High score"] = "Nejvyšší úroveň",
    ["Very Hard"] = "Velmi težká",
    ["Confirm"] = "Potvrdit",
    ["Ultra"] = "Velmi vysoká",
    ["Music Player"] = "Hudební přehrávač",
    ["Concept artist"] = "Konceptový umělec",
    ["Stunned"] = "Ohromený",
    ["Crouch"] = "Skrčit se",
    ["Producer"] = "Producent",
    ["Version"] = "Verze",
    ["Simulation game"] = "Simulátor",
    ["Pinch"] = "Zúžení",
    ["Collect"] = "Sbírat",
    ["Please be careful."] = "Prosím buď opatrný",
    ["New Character"] = "Nová postava",
    ["Premium"] = "Premiová verze",
    ["Translation"] = "Překlad",
    ["Critical"] = "Kritický",
    ["Respawn in:"] = "Oživení za:",
    ["Damage"] = "Poškození",
    ["Arrow"] = "Šíp",
    ["Download"] = "Stáhnout",
    ["Register"] = "Registrace",
    ["Knife"] = "Nůž",
    ["Downloadable content"] = "Obsah ke stažení",
    ["Online Multiplayer"] = "Hrát přes síť",
    ["Normal"] = "Normální",
    ["Run away"] = "Utéct",
    ["Story"] = "Příběh",
    ["Shader detail"] = "Kvalita shaderu",
    ["Bet"] = "Sázka",
    ["Press Start"] = "Stiskněte start",
    ["Yeah"] = "Jistě",
    ["DLC"] = "Stáhnutelný obsah",
    ["Shadows"] = "Stíny",
    ["Shoot"] = "Střílet",
    ["Bonus"] = "Bonus",
    ["You lost!"] = "Prohrál jsi!",
    ["Dice"] = "Kostky",
    ["Castle"] = "Hrad",
    ["Back"] = "Zpět",
    ["Forgot password"] = "Zapomenuté heslo",
    ["Eyes"] = "Oči",
    ["Claim"] = "Činit si nárok",
    ["Frozen"] = "Zmražený",
    ["Gear"] = "Ozubené kolo",
    ["Victory"] = "Vítězství",
    ["Invalid CD Key."] = "Neplatný CD klíč.",
    ["Tester"] = "Tester",
    ["Feet"] = "Chodidla",
    ["Paused"] = "Pozastaveno",
    ["Design Director"] = "Design


 b['d'] AS D
FROM s3
EMIT CHANGES;
```

This query should return the following results. The last two column names have been aliased. If you elect not to give them a name, ksqlDB will generate names like `KSQL_COL_0` for each.

```
+------------------------------+------------------------------+------------------------------+------------------------------+
|A                             |B                             |C                             |D                             |
+------------------------------+------------------------------+------------------------------+------------------------------+
|k1                            |{c=2, d=4}                    |2                             |4                             |
|k2                            |{c=4, d=8}                    |4                             |8                             |
|k3                            |{c=8, d=16}                   |8                             |16                            |
```

### Arrays

Arrays are a collection data type that contain a sequence of values of a single type. Destructure arrays using bracket syntax (`[]`).

Begin by telling ksqlDB to start all queries from the earliest point in each topic.

```sql
SET 'auto.offset.reset' = 'earliest';
```

Make a stream `s4` with two columns: `a` and `b`. `b` is an array with `INT` elements.

```sql
CREATE STREAM s4 (
    a VARCHAR KEY,
    b ARRAY<INT>
) WITH (
    kafka_topic = 's4',
    partitions = 1,
    value_format = 'avro'
);
```

Insert some rows into `s4`. You can represent an array literal by using the `ARRAY` constructor, which takes a variable number of elements.

```sql
INSERT INTO s4 (
    a, b
) VALUES (
    'k1', ARRAY[1]
);

INSERT INTO s4 (
    a, b
) VALUES (
    'k2', ARRAY[2, 3]
);

INSERT INTO s4 (
    a, b
) VALUES (
    'k3', ARRAY[4, 5, 6]
);
```

To access an array in a query, start with the name of a column and add `[]` each index you want to drill into. This query selects column `a`, `b`, the first element of `b`, the second element of `b`, the third element of `b`, and the last element of `b`:

```sql
SELECT a,
       b,
       b[1] AS b_1,
       b[2] AS b_2,
       b[3] AS b_3,
       b[-1] AS b_minus_1
FROM s4
EMIT CHANGES;
```

This query should return the following results. Notice that index `1` represents the first element of each array. By contrast to many programming languages which represent the first element of an array as `0`, most databases, like ksqlDB, represent it as `1`. If an element is absent, the result is `null`. You can use negative indices to navigate backwards through the array. In this example, `-1` retrieves the last element of each array regardless of its length.

```
+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+
|A                  |B                  |B_1                |B_2                |B_3                |B_MINUS_1          |
+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+
|k1                 |[1]                |1                  |null               |null               |1                  |
|k2                 |[2, 3]             |2                  |3                  |null               |3                  |
|k3                 |[4, 5, 6]          |4                  |5                  |6                  |6                  |
```

## Deeply nested data

You may have structured data types that are nested within one another. Each data type's destructuring syntax composes irrespective of how it is nested.

Begin by telling ksqlDB to start all queries from the


              col.plot(dim_range, est_power, label=INDEP_TESTS[test].__name__, lw=2)
                col.set_xticks([])
                if i == 3:
                    col.set_xticks([dim_range[0], dim_range[-1]])
                col.set_ylim(-0.05, 1.05)
                col.set_yticks([])
                if j == 0:
                    col.set_yticks([0, 1])
                col.set_title(SIM_TITLES[count])

    fig.text(0.5, 0.05, "Dimension", ha="center")
    fig.text(
        0.07,
        0.5,
        "Statistical Power",
        va="center",
        rotation="vertical",
    )
    leg = plt.legend(
        bbox_to_anchor=(0.5, 0.05),
        bbox_transform=plt.gcf().transFigure,
        ncol=len(INDEP_TESTS.keys()),
        loc="upper center",
    )
    leg.get_frame().set_linewidth(0.0)
    for legobj in leg.legend_handles:
        legobj.set_linewidth(5.0)
    plt.subplots_adjust(hspace=0.50)

# plot the power
plot_power()


 a, b) => r[a] * r[b]),                 // mulr: 2,
    createOpCode((r, a, b) => r[a] * b),                    // muli: 3,
    createOpCode((r, a, b) => r[a] & r[b]),                 // banr: 4,
    createOpCode((r, a, b) => r[a] & b),                    // bani: 5,
    createOpCode((r, a, b) => r[a] | r[b]),                 // borr: 6,
    createOpCode((r, a, b) => r[a] | b),                    // bori: 7,
    createOpCode((r, a, _) => r[a]),                        // setr: 8,
    createOpCode((_, a)    => a),                           // seti: 9,
    createOpCode((r, a, b) => a > r[b] ? 1 : 0),            // gtir: 10,
    createOpCode((r, a, b) => r[a] > b ? 1 : 0),            // gtri: 11,
    createOpCode((r, a, b) => r[a] > r[b] ? 1 : 0),         // gtrr: 12,
    createOpCode((r, a, b) => a === r[b] ? 1 : 0),          // eqir: 13,
    createOpCode((r, a, b) => r[a] === b ? 1 : 0),          // eqri: 14,
    createOpCode((r, a, b) => r[a] === r[b] ? 1 : 0)        // eqrr: 15,
];

const findHaltCode = (fn: string) => {
    const [program, ipr] = getProgram(fn);
    const reg = [0, 0, 0, 0, 0, 0];
    const length = program.length - 1;
    while (0 <= reg[ipr] && reg[ipr] <= length ) {
        const ip = reg[ipr];
        const [code, a, b, c] = program[ip];
        if (ip === LINE) {
            break;
        }
        opcodes[code](reg, a, b, c, ipr);
    }
    return reg[PARAM];
};

const findSlowestHaltCode = () => {
    const haltCodes: number[] = [];
    let [c, d] = [0, 0];
    c = d | 65536;
    d = 1505483;
    while (true) {
        // e = c & 255
        // d = d + e
        // d = d & 16777215
        // d = d * 65899
        // d = d & 16777215
        d = (((d + (c & 255)) & 16777215) * 65899) & 16777215;
        if (256 > c) {
            if (haltCodes.includes(d)) {
                break;
            }
            haltCodes.push(d);
            c = d | 65536;
            d = 1505483;
            continue;
        }
        // e = 0
        // while(true) {
        //     f = e + 1
        //     f = f * 256
        //     if(f > c) {
        //         break;
        //     }
        //     e = e + 1
        // }
        c = Math.floor(c / 256);
    }
    return haltCodes[haltCodes.length - 1];
};

test("21", () => {
    expect(findHaltCode("21")).toEqual(7216956);
    expect(findSlowestHaltCode()).toEqual(14596916);
});

/*
// Output from D21.print.ts
L5: d = 0;
L6: c = d | 65536;
L7: d = 1505483;
L8: e = c & 255;
L9: d = d + e;
L10: d = d & 16777215;
L11: d = d * 65899;
L12: d = d & 16777215;
L13: goto 28 if 256 > c  else goto 17;
L17: e = 0;
L18: f = e + 1;
L19: f = f * 256;
L20: goto 26 if f > c  else goto 24;
L24: e = e + 1;
L25: goto 18;
L26: c = e;
L27: goto 8;
L28: goto 31 if d === a  else goto 6;
*/
import { Scheduler } from '@keydo


-11282018-medium-plus-169.jpg" data-src-small="//cdn.cnn.com/cnnnext/dam/assets/181128123821-01-mike-pompeo-11282018-large-169.jpg" data-src-medium="//cdn.cnn.com/cnnnext/dam/assets/181128123821-01-mike-pompeo-11282018-exlarge-169.jpg" data-src-large="//cdn.cnn.com/cnnnext/dam/assets/181128123821-01-mike-pompeo-11282018-super-169.jpg" data-src-full16x9="//cdn.cnn.com/cnnnext/dam/assets/181128123821-01-mike-pompeo-11282018-full-169.jpg" data-src-mini1x1="//cdn.cnn.com/cnnnext/dam/assets/181128123821-01-mike-pompeo-11282018-small-11.jpg"  data-eq-pts="mini: 0,  xsmall: 221,  small: 308,  medium: 461,  large:  781" src="data:image/gif;base64,R0lGODlhEAAJAJEAAAAAAP///////wAAACH5BAEAAAIALAAAAAAQAAkAAAIKlI+py+0Po5yUFQA7">

Trump officials break with CIA assessment

<article class="cd cd--card cd--video cd--idx-5 cd--medium cd--vertical cd--has-siblings cd--has-media cd--media__image" data-vr-contentbox="/videos/politics/2018/11/28/nancy-pelosi-speaker-nominee-vote-house-dems-presser-vpx.cnn/video/playlists/this-week-in-politics/" data-eq-pts="xsmall: 0, small: 300, medium: 460, large: 780, full16x9: 1100" data-video-id="politics/2018/11/28/nancy-pelosi-speaker-nominee-vote-house-dems-presser-vpx.cnn" data-bundle="one_tap" data-ad-section="const-video-leaf" data-section-name="politics" data-video-playlist-url="/video/playlists/this-week-in-politics/">

<img class="media__image media__image--responsive" alt="WASHINGTON, DC - NOVEMBER 15:  U.S. House Minority Leader Rep. Nancy


          }
          ++pIt1;
          if ( pIt1 == pItLast )
            avoidPnt = & eData.Last().myP;
          else
            avoidPnt = NULL;

          if ( iLoop > 20 )
          {
#ifdef _DEBUG_
            cout << "Infinite loop in AdaptiveAlgo::Compute()" << endl;
#endif
            sizeDecreased = false;
            break;
          }
        }
      } // while ( sizeDecreased )
    } // loop on myEdges

    // *theProgress = 0.3 + 0.3 * iF / double( faceMap.Extent() );

  } // loop on faceMap

  return makeSegments();
}

//================================================================================
/*!
 * \brief Create segments
 */
//================================================================================

bool AdaptiveAlgo::makeSegments()
{
  SMESH_HypoFilter quadHyp( SMESH_HypoFilter::HasName( "QuadraticMesh" ));
  _quadraticMesh = myMesh->GetHypothesis( myEdges[0].Edge(), quadHyp, /*andAncestors=*/true );

  SMESH_MesherHelper helper( *myMesh );
  helper.SetIsQuadratic( _quadraticMesh );

  vector< double > nbSegs, params;

  for ( int iE = 0; iE < myEdges.size(); ++iE )
  {
    EdgeData& eData = myEdges[ iE ];

    // estimate roughly min segment size on the EDGE
    double edgeMinSize = myHyp->GetMaxSize();
    EdgeData::TPntIter pIt1 = eData.myPoints.begin();
    for ( ; pIt1 != eData.myPoints.end(); ++pIt1 )
      edgeMinSize = Min( edgeMinSize,
                         Min( pIt1->mySegSize, mySizeTree->GetSize( pIt1->myP )));

    const double f = eData.myC3d.FirstParameter(), l = eData.myC3d.LastParameter();
    const double parLen = l - f;
    const int  nbDivSeg = 5;
    int           nbDiv = Max( 1, int ( eData.myLength / edgeMinSize * nbDivSeg ));

    // compute nb of segments
    bool toRecompute = true;
    double maxSegSize = 0;
    size_t i = 1, segCount;
    //cout << "E " << theMesh.GetMeshDS()->ShapeToIndex( eData.Edge() ) << endl;
    while ( toRecompute ) // recompute if segment size at some point is less than edgeMinSize/nbDivSeg
    {
      nbSegs.resize( nbDiv + 1 );
      nbSegs[0] = 0;
      toRecompute = false;

      // fill nbSegs with segment size stored in EdgeData::ProbePnt::mySegSize which can
      // be less than size in mySizeTree
      pIt1 = eData.myPoints.begin();
      EdgeData::ProbePnt* pp1 = &(*pIt1), *pp2;
      for ( ++pIt1; pIt1 != eData.myPoints.end(); ++pIt1 )
      {
        pp2 = &(*pIt1);
        double size1 = Min( pp1->mySegSize, myHyp->GetMaxSize() );
        double size2 = Min( pp2->mySegSize, myHyp->GetMaxSize() );
        double r, u, du = pp2->myU - pp1->myU;
        while(( u = f + parLen * i / nbDiv ) < pp2->myU )
        {
          r = ( u - pp1->myU ) / du;
          nbSegs[i] = (1-r) * size1 + r * size2;
          ++i;
        }


142   1Ti        RWX            csi-filestore   9m36s
    ```

5. Verify pod is created and in `RUNNING` state (it may take a few minutes to get to running state)
    ```
    $ kubectl get pods
    NAME                      READY     STATUS    RESTARTS   AGE
    web-server                1/1       Running   0          1m
    ```

6. Check current filesystem size on the running pod
    ```
    $ kubectl exec web-server -- df -h /usr/share/nginx/html
    Filesystem          Size  Used Avail Use% Mounted on
    <Instance IP>:/vol1 1007G   76M  956G   1% /usr/share/nginx/html
    ```

7. Get the zone information from the `volumeHandle` of PV spec
    ```console
    $ kubectl get pv pvc-def880a7-b6a6-4b12-b8ad-4fa6d928c142 -o yaml
    ```
    ```yaml
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      annotations:
        pv.kubernetes.io/provisioned-by: filestore.csi.storage.gke.io
      creationTimestamp: "2020-11-13T05:15:21Z"
      finalizers:
      - kubernetes.io/pv-protection
      ...
    spec:
      accessModes:
      - ReadWriteMany
      capacity:
        storage: 1Ti
      claimRef:
        apiVersion: v1
        kind: PersistentVolumeClaim
        name: test-pvc
        namespace: default
        resourceVersion: "18588"
        uid: def880a7-b6a6-4b12-b8ad-4fa6d928c142
      csi:
        driver: filestore.csi.storage.gke.io
        fsType: ext4
        volumeAttributes:
          ip: <Filestore Instance IP>
          storage.kubernetes.io/csiProvisionerIdentity: 1605236375597-8081-filestore.csi.storage.gke.io
          volume: vol1
        volumeHandle: modeInstance/us-central1-b/pvc-def880a7-b6a6-4b12-b8ad-4fa6d928c142/vol1
      persistentVolumeReclaimPolicy: Delete
      storageClassName: csi-filestore
      volumeMode: Filesystem
    status:
      phase: Bound
      ```
7. Verify the filestore instance properties:

    ```console
    $ gcloud beta filestore instances describe pvc-def880a7-b6a6-4b12-b8ad-4fa6d928c142 --zone us-central1-b
    ```

    ```yaml
        createTime: '2020-11-13T05:13:10.929454142Z'
        fileShares:
        - capacityGb: '1024'
        name: vol1
        nfsExportOptions:
        - accessMode: READ_WRITE
        ipRanges:
        - 10.0.0.0/8
        - 172.16.0.0/12
        - 192.168.0.0/16
        squashMode: NO_ROOT_SQUASH
        labels:
          kubernetes_io_created-for_pv_name: pvc-def880a7-b6a6-4b12-b8ad-4fa6d928c142
          kubernetes_io_created-for_pvc_name: test-pvc
          kubernetes_io_created-for_pvc_namespace: default
          storage_gke_io_created-by: filestore_csi_storage_gke_io
        name:


wrapper that was found.
     *
     * @example
     * ```
     * await Article.callWrapperByURL('/articles/abc123/upvote');
     *
     * // Which is the equivalent of calling the `upvote()` method directly:
     * await Article.upvote({id: 'abc123'});
     * ```
     *
     * @category Wrappers
     */
    static get callWrapperByURL() {
      return this.prototype.callWrapperByURL;
    }

    /**
     * Calls the method associated to the first wrapper that matches the specified URL.
     *
     * If no wrapper matches the specified URL, an error is thrown.
     *
     * When a wrapper is found, the associated method is called with the parameters that are included in the specified URL.
     *
     * @param url A string or a [URL](https://developer.mozilla.org/en-US/docs/Web/API/URL) object.
     *
     * @returns The result of the method associated to the wrapper that was found.
     *
     * @example
     * ```
     * await Article.callWrapperByURL('/articles/abc123/upvote');
     *
     * // Which is the equivalent of calling the `upvote()` method directly:
     * await Article.upvote({id: 'abc123'});
     * ```
     *
     * @category Wrappers
     */
    callWrapperByURL(url: URL | string, children: () => any): any {
      let routable: typeof Routable | Routable = this;

      let result = routable.findWrapperByURL(url);

      if (result === undefined && isRoutableInstance(routable)) {
        // Fallback to the class
        routable = routable.constructor as typeof Routable;
        result = routable.findWrapperByURL(url);
      }

      if (result === undefined) {
        throw new Error(
          `Couldn't find a wrapper matching the specified URL (${routable.describeComponent()}, URL: '${url}')`
        );
      }

      const {wrapper, identifiers, params, wrapperPath} = result;

      return routable.__callWrapper(wrapper, identifiers, params, wrapperPath, children);
    }

    static __wrappers?: Map<string, Wrapper>;

    __wrappers?: Map<string, Wrapper>;

    static get __getWrappers() {
      return this.prototype.__getWrappers;
    }

    __getWrappers(autoFork = false) {
      if (this.__wrappers === undefined) {
        Object.defineProperty(this, '__wrappers', {value: new Map()});
      } else if (autoFork && !hasOwnProperty(this, '__wrappers')) {
        Object.defineProperty(this, '__wrappers', {value: new Map(this.__wrappers)});
      }

      return this.__wrappers!;
    }

    // === Observability ===

    /**
     * See the methods that are inherited from the [`Observable`](https://layrjs.com/docs/v1/reference/observable#observable-class) class.
     *
     * @category Observability
     */

    // === Utilities ===

    static isRoutable(value: any): value is RoutableComponent {
      return isRoutableInstance(value);
    }
  }

  return Routable;
}

export class RoutableComponent extends Routable(Component) {}
import { BoxGeometry, Mesh, MeshPhongMaterial } from "three";

export default class Blade {
    private _mesh: Mesh = new Mesh();

    constructor(colors: any) {
        const geom = new BoxGeometry(1,100,20,1,1,1);
        const mat = new MeshPhongMaterial({ color: colors.brownDark, flatShading: true });

        const blade = new Mesh(geom, mat);
        blade.position.set(8,0,0);
        blade.castShadow = true;
        blade.receiveShadow = true;

        this.mesh = blade;
    }

    get mesh () {
        return this._mesh;
    }

    set mesh(set: Mesh) {
        this._mesh = set;
    }
}import 'reflect-metadata';
import AppError from '@shared/errors


: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/establish-serial-connection.html#linux-dialout-group

## Using 3rd party Arduino libraries

To include 3rd party Arduino libraries in your project, you have to:

* Add them to the `components` folder.
* Add a file `component.mk` and/or `CMakeLists.txt` inside the component's folder

`component.mk` is needed if you use `make` to compile it. And `CMakeLists.txt` is needed if you use `idf.py` to compile it.

Let's use a real case as example:

### Example: Adding ESP32Servo

Suppose you want to use [ESP32Servo] project. The first thing to notice is that the source files are placed
in the `src` folder.  We have to create a `component.mk` and/or `CMakeLists.txt` files that tells the
ESP-IDF to look for the sources in the `src` folder.

Example:

```sh
# 1) We clone ESP32Servo into components folder
cd components
git clone https://github.com/madhephaestus/ESP32Servo.git
cd ESP32Servo
```

And now create create these files files inside `components/ESP32Servo` folder:

```sh
# 2) Create component.mk file
# Only needed if you use "make" to compile the project
# Copy & paste the following lines to the terminal:
cat << EOF > component.mk
COMPONENT_ADD_INCLUDEDIRS := src
COMPONENT_SRCDIRS := src
EOF
```

```sh
# 3) Create CMakeLists.txt file
# Only needed if you use "idf.py" to compile the project
# Copy & paste the following lines to the terminal:
cat << EOF > CMakeLists.txt
idf_component_register(SRC_DIRS "src"
                    INCLUDE_DIRS "src"
                    REQUIRES "arduino")
EOF
```

Finally, if you use `idf.py`, you have to update the dependencies in the `main/CMakeLists.txt`. E.g:

```sh
# Needed if you use "idf.py" to compile the project
cd main
edit CMakeLists.txt
```

...and append `ESP32Servo` to `REQUIRES`. The `main/CMakeLists.txt` should look like this:

```cmake
idf_component_register(SRCS "${srcs}"
                    INCLUDE_DIRS "."
                    REQUIRES "${requires}" "ESP32Servo")
```

And that's it. Now you can include `ESP32Servo` from your code. E.g:

```cpp
// Add this include in your arduino_main.cpp file
#include <ESP32Servo.h>
```

[esp32servo]: https://github.com/madhephaestus/ESP32Servo.git

## IDE

Arduino IDE is not supported, but you can use [Visual Studio Code][vscode] + [ESP-IDF plugin][esp-idf-plugin].

You can do:

* All the regular Visual Studio Code regular features
* ...plus configure, build, flash and monitor your project
* ...and much more

![ide](https://lh3.googleusercontent.com/pw/AM-JKLUxjqUhU2tM-bKw3togS3gTkBdtmi40kqW2c2KieAybnD770I3pdaLnFU7a-sM7dUUGmcWpigvElc1fGo1J-5bJlVdbg8HOJZKbUXo6A_IqIvUGEK6GtwxqNy5EFJmijrBnB_aQhd_fi3GQnXZ1V7WYvw=-no)

Subjective opinion: VSCode + ESP-IDF plugin is muuuuuch better than Arduino IDE. Highly recommended!

[vscode]: https://code.visualstudio.com/
[esp-idf-plugin]: https://docs.espressif.com/projects/esp-idf/en/


undle
import android.support.v4.media.MediaBrowserCompat
import android.support.v4.media.MediaDescriptionCompat
import androidx.annotation.StringRes
import androidx.annotation.WorkerThread
import androidx.core.net.toUri
import androidx.media.utils.MediaConstants
import org.videolan.medialibrary.interfaces.Medialibrary
import org.videolan.medialibrary.interfaces.media.Album
import org.videolan.medialibrary.interfaces.media.MediaWrapper
import org.videolan.medialibrary.interfaces.media.Playlist
import org.videolan.medialibrary.media.MediaLibraryItem
import org.videolan.resources.CONTENT_STYLE_BROWSABLE_HINT
import org.videolan.resources.CONTENT_STYLE_CATEGORY_ITEM_HINT_VALUE
import org.videolan.resources.CONTENT_STYLE_GRID_ITEM_HINT_VALUE
import org.videolan.resources.CONTENT_STYLE_LIST_ITEM_HINT_VALUE
import org.videolan.resources.CONTENT_STYLE_PLAYABLE_HINT
import org.videolan.resources.EXTRA_BROWSER_ICON_SIZE
import org.videolan.resources.EXTRA_CONTENT_STYLE_SINGLE_ITEM
import org.videolan.resources.EXTRA_RELATIVE_MEDIA_ID
import org.videolan.tools.KEY_ARTISTS_SHOW_ALL
import org.videolan.tools.PLAYBACK_HISTORY
import org.videolan.tools.Settings
import org.videolan.tools.abbreviate
import org.videolan.tools.getResourceUri
import org.videolan.tools.markBidi
import org.videolan.tools.removeQuery
import org.videolan.tools.retrieveParent
import org.videolan.tools.toInt
import org.videolan.vlc.ArtworkProvider
import org.videolan.vlc.BuildConfig
import org.videolan.vlc.R
import org.videolan.vlc.gui.helpers.MediaComparators
import org.videolan.vlc.gui.helpers.MediaComparators.formatArticles
import org.videolan.vlc.isPathValid
import org.videolan.vlc.media.MediaUtils.getMediaAlbum
import org.videolan.vlc.media.MediaUtils.getMediaArtist
import org.videolan.vlc.media.MediaUtils.getMediaSubtitle
import org.videolan.vlc.util.TextUtils
import org.videolan.vlc.util.ThumbnailsProvider
import org.videolan.vlc.util.isSchemeStreaming

/**
 * The mediaId used in the media session browser is defined as an opaque string token which is left
 * up to the application developer to define. In practicality, mediaIds from multiple applications
 * may be combined into a single data structure, so we use a valid uri, and have have intentionally
 * prefixed it with a namespace. The value is stored as a string to avoid repeated type conversion;
 * however, it may be parsed by the uri class as needed. The uri starts with two forward slashes to
 * disambiguate the authority from the path, per RFC 3986, section 3.
 *
 * The mediaId structure is documented below for reference. The first (or second) letter of each
 * section is used in lieu of the entire word in order to shorten the id throughout the library.
 * The reduction of space consumed by the mediaId enables an increased number of records per page.
 *
 * Root node
 * //org.videolan.vlc/{r}oot[?{f}latten=1]
 * Root menu
 * //org.videolan.vlc/{r}oot/home
 * //org.videolan.vlc/{r}oot/playlist/<id>
 * //org.videolan.vlc/{r}oot/{l}ib
 * //org.videolan.vlc/{r}oot/stream
 * Home menu
 * //org.videolan.vlc/{r}oot/home/shuffle_all
 * //org.videolan.vlc/{r}oot/home/last_added[?{i}ndex=<track num>]
 * //org.videolan.vlc/{r}oot/home/history[?{i}ndex=<track num>]
 * Library menu
 * //org.videolan.vlc/{r}oot/{l}ib/a{r}tist[?{p}age=<page num>]
 * //org.videolan.vlc/{r}oot/{l}ib/a{r}tist/<id>
 * //org.videolan.vlc/{r}oot/{l}ib/a{l}bum[?{p}


		case *matter.Bitmap:
					slog.Debug("Found global bitmap", "name", m.Name, "path", d.Path)
					spec.addEntityByName(m.Name, m, nil)
					spec.GlobalObjects[m] = d
				case *matter.Enum:
					slog.Debug("Found global enum", "name", m.Name, "path", d.Path)
					spec.addEntityByName(m.Name, m, nil)
					spec.GlobalObjects[m] = d
				case *matter.Struct:
					slog.Debug("Found global struct", "name", m.Name, "path", d.Path)
					spec.addEntityByName(m.Name, m, nil)
					spec.GlobalObjects[m] = d
				case *matter.TypeDef:
					slog.Debug("Found global typedef", "name", m.Name, "path", d.Path)
					spec.addEntityByName(m.Name, m, nil)
					spec.GlobalObjects[m] = d
				case *matter.Command:
					spec.addEntityByName(m.Name, m, nil)
					spec.GlobalObjects[m] = d
				case *matter.Event:
					spec.addEntityByName(m.Name, m, nil)
					spec.GlobalObjects[m] = d
				default:
					slog.Warn("unknown entity type", "path", d.Path, "type", fmt.Sprintf("%T", m))
				}
				switch m := m.(type) {
				case *matter.ClusterGroup:
					for _, c := range m.Clusters {
						spec.DocRefs[c] = d
					}
				default:
					spec.DocRefs[m] = d
				}
			}
		}
	}

	if basicInformationCluster == nil {
		err = fmt.Errorf("missing Basic Information Cluster in spec")
		return
	}
	if bridgedDeviceBasicInformationCluster == nil {
		err = fmt.Errorf("missing Bridged Device Basic Information Cluster in spec")
		return
	}
	if spec.RootNodeDeviceType == nil {
		err = fmt.Errorf("missing Root Node Device Type in spec")
		return
	}

	sp.resolveClusterDataTypeReferences(true)
	sp.resolveGlobalDataTypeReferences()
	if !sp.ignoreHierarchy {
		sp.resolveHierarchy()
	}
	err = spec.associateDeviceTypeRequirements()
	if err != nil {
		return
	}

	sp.resolveClusterDataTypeReferences(false)

	sp.resolveConformances()
	sp.resolveConstraints()
	err = updateBridgedBasicInformationCluster(spec, basicInformationCluster, bridgedDeviceBasicInformationCluster)
	if err != nil {
		return
	}

	spec.BuildClusterReferences()
	spec.BuildDataTypeReferences()

	sp.noteConformanceResolutionFailures(spec)
	sp.noteConstraintResolutionFailures(spec)

	Validate(spec)

	return
}

func (spec *Specification) BuildClusterReferences() {
	iterateOverDataTypes(spec, func(cluster *matter.Cluster, parent, entity types.Entity) {
		if cluster != nil {
			spec.ClusterRefs.Add(cluster, entity)
		}
	})
}

func indexAnchors(docs []*Doc) (err error) {
	for _, d := range docs {
		var anchors map[string][]*Anchor
		anchors, err = d.Anchors()
		if err != nil {
			return
		}
		for id, anchor := range anchors {
			d.group.anchors[id] = append(d.group.anchors[id], anchor...)
		}
		for id, anchor := range d.anchorsByLabel {
			d.group.anchorsByLabel[id] = append(d.group.anchorsByLabel[id], anchor...)
		}
	}
	return
}

func indexCrossReferences(docs []*Doc) {
	for _, d := range docs {
		if errata.GetSpec(d.Path.Relative).UtilityInclude {
			continue
		}
		crossReferences := d.CrossReferences()
		for id, xrefs := range