lw r4, r3
/* 801B8E2C 001B5D6C  40 82 FE EC */	bne .L_801B8D18
/* 801B8E30 001B5D70  80 01 02 34 */	lwz r0, 0x234(r1)
/* 801B8E34 001B5D74  83 E1 02 2C */	lwz r31, 0x22c(r1)
/* 801B8E38 001B5D78  83 C1 02 28 */	lwz r30, 0x228(r1)
/* 801B8E3C 001B5D7C  83 A1 02 24 */	lwz r29, 0x224(r1)
/* 801B8E40 001B5D80  7C 08 03 A6 */	mtlr r0
/* 801B8E44 001B5D84  38 21 02 30 */	addi r1, r1, 0x230
/* 801B8E48 001B5D88  4E 80 00 20 */	blr
.endfn completeUnitData__Q24Game10RoomMapMgrFv

.fn setupJUTTextures__Q24Game10RoomMapMgrFv, global
/* 801B8E4C 001B5D8C  94 21 FF D0 */	stwu r1, -0x30(r1)
/* 801B8E50 001B5D90  7C 08 02 A6 */	mflr r0
/* 801B8E54 001B5D94  3C 80 80 4B */	lis r4, "__vt__25Iterator<Q24Game7MapUnit>"@ha
/* 801B8E58 001B5D98  90 01 00 34 */	stw r0, 0x34(r1)
/* 801B8E5C 001B5D9C  38 00 00 00 */	li r0, 0
/* 801B8E60 001B5DA0  38 84 5E E0 */	addi r4, r4, "__vt__25Iterator<Q24Game7MapUnit>"@l
/* 801B8E64 001B5DA4  93 E1 00 2C */	stw r31, 0x2c(r1)
/* 801B8E68 001B5DA8  7C 7F 1B 78 */	mr r31, r3
/* 801B8E6C 001B5DAC  28 00 00 00 */	cmplwi r0, 0
/* 801B8E70 001B5DB0  93 C1 00 28 */	stw r30, 0x28(r1)
/* 801B8E74 001B5DB4  93 A1 00 24 */	stw r29, 0x24(r1)
/* 801B8E78 001B5DB8  80 63 00 A8 */	lwz r3, 0xa8(r3)
/* 801B8E7C 001B5DBC  90 81 00 08 */	stw r4, 8(r1)
/* 801B8E80 001B5DC0  90 01 00 14 */	stw r0, 0x14(r1)
/* 801B8E84 001B5DC4  90 01 00 0C */	stw r0, 0xc(r1)
/* 801B8E88 001B5DC8  90 61 00 10 */	stw r3, 0x10(r1)
/* 801B8E8C 001B5DCC  40 82 00 1C */	bne .L_801B8EA8
/* 801B8E90 001B5DD0  81 83 00 00 */	lwz r12, 0(r3)
/* 801B8E94 001B5DD4  81 8C 00 18 */	lwz r12, 0x18(r12)
/* 801B8E98 001B5DD8  7D 89 03 A6 */	mtctr r12
/* 801B8E9C 001B5DDC  4E 80 04 21 */	bctrl
/* 801B8EA0 001B5DE0


ert(crypto.hash("sha512", "hello") == sha512hash)

sha3_256hash = '\x33\x38\xbe\x69\x4f\x50\xc5\xf3\x38\x81\x49\x86\xcd\xf0\x68\x64\x53\xa8\x88\xb8\x4f\x42\x4d\x79\x2a\xf4\xb9\x20\x23\x98\xf3\x92'
assert(crypto.hash("sha3_256", "hello") == sha3_256hash)

sha3_512hash = '\x75\xd5\x27\xc3\x68\xf2\xef\xe8\x48\xec\xf6\xb0\x73\xa3\x67\x67\x80\x08\x05\xe9\xee\xf2\xb1\x85\x7d\x5f\x98\x4f\x03\x6e\xb6\xdf\x89\x1d\x75\xf7\x2d\x9b\x15\x45\x18\xc1\xcd\x58\x83\x52\x86\xd1\xda\x9a\x38\xde\xba\x3d\xe9\x8b\x5a\x53\xe5\xed\x78\xa8\x49\x76'
assert(crypto.hash("sha3_512", "hello") == sha3_512hash)

-- unknown hash methods throws an error which I don't think we can
-- handle from within the lua script?
-- crypto.hash("unknown_hash_method_xyz", "hello")


func BenchmarkStd(b *testing.B) {
	for range b.N {
		for v := 0; v < 0xFFF_FFFF; v += 5 {
			for k := 1; k < 24; k++ {
				div = ReciDivByPower5(uint64(v), k)
			}
		}
	}
}

var div bool

var (
	lut [27 * 2]uint64
)

func init() {
	div := uint64(5)
	for n := 0; n < len(lut); n += 2 {
		hi, lo := castspell(div)
		lut[n] = lo
		lut[n+1] = hi
		div *= 5
	}
}

func castspell(div uint64) (uint64, uint64) {
	var recip, bigdiv big.Int
	bigdiv.SetUint64(div)
	recip.SetBit(&recip, 128, 1)
	recip.Div(&recip, &bigdiv)
	recip.Add(&recip, big.NewInt(1))
	if bits.UintSize != 64 {
		panic("not implemented on 32-bit")
	}
	words := recip.Bits()
	var hi, lo uint64
	if len(words) > 0 {
		lo = uint64(words[0])
	}
	if len(words) > 1 {
		hi = uint64(words[1])
	}
	return hi, lo
}
package main

import (
	"fmt"
	"math/rand"
	"time"

	"github.com/egonelbre/exp/aq"
)

const MaxSize = 512 << 20

func main() {
	db, err := aq.New("example.db", MaxSize)
	if err != nil {
		panic(err)
	}
	defer db.Close()

	const (
		minWrite = 1 << 8
		maxWrite = 1 << 12
	)

	empty := make([]byte, maxWrite)
	written := 0
	count := 0

	start := time.Now()
	for {
		n := rand.Intn(maxWrite-minWrite) + minWrite
		_, err := db.Write(empty[:n])
		if err != nil {
			break
		}

		written += n
		count++
	}
	elapsed := time.Since(start)

	mb := float64(written) / float64(1<<20)
	fmt.Printf("Write %.3fMB in %v\n", mb, elapsed)
	fmt.Printf("      %.3fMB/s\n", mb/elapsed.Seconds())
	fmt.Printf("      %v entries\n", count)

	start = time.Now()
	db.Flush()
	elapsed = time.Since(start)
	fmt.Printf("Flush %v\n", elapsed)

	start = time.Now()
	read := 0
	count = 0
	sum := 0
	it := db.Iterate()
	for it.Next() {
		b := it.Bytes()
		n := len(b)
		read += n
		for _, v := range b {
			sum += int(v)
		}
		count++
	}
	elapsed = time.Since(start)

	mb = float64(read) / float64(1<<20)
	fmt.Printf("Read  %.3fMB in %v\n", mb, elapsed)
	fmt.Printf("      %.3fMB/s\n", mb/elapsed.Seconds())
	fmt.Printf("      %v entries\n", count)
}
package ui

import termbox "github.com/nsf/termbox-go"

func (form *Form) Init() {
	widgets := ReflectLoadWidgets(form.Record)

	form.Components = nil
	form.FocusedIndex = -1

	form.Components = nil
	for _, w := range widgets {
		form.Components = append(form.Components,
			&Component{Widget: w})
	}
	form.UpdateLayout()

	form.TabFocus(1)
}

func (form *Form) UpdateLayout() {
	form.ClientRect = form.Bounds


          pattern: /^\w+(,\w+)*$/,
          message: "CPTs must be a list of post type slugs"
        }
      ],
      function(err, result) {
        if (err) {
          console.log(err);
          return done();
        }

        var slug = slugify(result.name, { lower: true });

        exec(
          "docker exec " +
            container +
            " bash -c 'wp --allow-root scaffold taxonomy " +
            slug +
            " --label=" +
            result.name +
            " --post_types=" +
            result.cpts +
            " --textdomain=nuxtpress'",
          function(error, stdout, stderr) {
            if (!error) {
              mkdirp("./wp-content/themes/nuxtpress/taxonomies", function(err) {
                if (err) {
                  console.log(
                    "ERROR: Could not create taxonomy (" + err + ")."
                  );
                  return;
                }

                fs.writeFile(
                  "./wp-content/themes/nuxtpress/taxonomies/" + slug + ".php",
                  stdout,
                  function(err) {
                    if (err) {
                      console.log(
                        "ERROR: Could not create taxonomy (" + err + ")."
                      );
                      return;
                    }

                    console.log(
                      "SUCCESS: Taxonomy " + result.name + " created."
                    );
                  }
                );
              });
            } else {
              console.log("ERROR: Could not create taxonomy (" + error + ").");
            }
          }
        ).on("exit", function(code) {
          done();
        });
      }
    );
  }
};
// src/preload.js
const { contextBridge, ipcRenderer } = require('electron');

// 暴露安全的 API 给渲染进程
contextBridge.exposeInMainWorld('electronAPI', {
  // 发送消息到主进程 (用于单向通信)
  send: (channel, data) => {
    const validSendChannels = ['setup-complete-load-main'];
    if (validSendChannels.includes(channel)) {
      ipcRenderer.send(channel, data);
    }
  },
  // 监听主进程的消息 (用于主进程 -> 渲染进程通信)
  on: (channel, callback) => {
    const validOnChannels = [
      'from-main',
      'api-response',
      'setup-status',
      'start-setup-process',
      'oauth-code',
      'oauth-login-success',
      'stripe-payment-success',
      'stripe-payment-cancel'
    ];
    if (validOnChannels.includes(channel)) {
      const subscription = (event, ...args) => callback(...args);
      ipcRenderer.on(channel, subscription);
      return () => ipcRenderer.removeListener(channel, subscription);
    } else {
      console.warn(`ipcRenderer.on: Channel "${channel}" is not whitelisted.`);
      return () => {};
    }
  },
  // 移除监听器
  removeListener: (channel, callback) => {
    const validOnChannels = [
      'from-main',
      'api-response',
      'setup-status',
      'start-setup-process',
      'oauth-code',
      'oauth-login-success',
      'stripe-payment-success',
      'stripe-payment-cancel'
    ];
    if (validOnChannels.includes(channel)) {
      ipcRenderer.removeListener(channel, callback);
    }
  },
  // 调用主进程的 handle 方法 (用于双向通信)
  invoke: (channel, ...args) => {
    const validInvokeChannels = ['start-docker-setup'];
    if (validInvokeChannels.includes(channel)) {
      return ipcRenderer.invoke(channel, ...args);
    } else {
      console.warn(`ipcRenderer.invoke: C


=fáng',
  '魵=fén',
  '魶=nà',
  '魷=yóu',
  '魸=piàn',
  '魹=mó',
  '魺=hé',
  '魻=xiá',
  '魼=qū',
  '魽=hān',
  '魾=pī',
  '魿=líng',
  '鮀=tuó',
  '鮁=bà',
  '鮂=qiú',
  '鮃=píng',
  '鮄=fú',
  '鮅=bì',
  '鮆=cǐ,jì',
  '鮇=wèi',
  '鮈=jū',
  '鮉=diāo',
  '鮊=bó,bà',
  '鮋=yóu',
  '鮌=gǔn',
  '鮍=pí',
  '鮎=nián',
  '鮏=xīng',
  '鮐=tái',
  '鮑=bào',
  '鮒=fù',
  '鮓=zhǎ,zhà',
  '鮔=jù',
  '鮕=gū',
  '鮖=shí',
  '鮗=dōng',
  '鮘=chou,dài',
  '鮙=tǎ',
  '鮚=jié',
  '鮛=shū',
  '鮜=hòu',
  '鮝=xiǎng',
  '鮞=ér',
  '鮟=ān',
  '鮠=wéi',
  '鮡=zhào',
  '鮢=zhū',
  '鮣=yìn',
  '鮤=liè',
  '鮥=luò,gé',
  '鮦=tóng',
  '鮧=yí',
  '鮨=yì',
  '鮩=bìng',
  '鮪=wěi',
  '鮫=jiāo',
  '鮬=kū',
  '鮭=guī,xié',
  '鮮=xiān,xiǎn',
  '鮯=gé',
  '鮰=huí',
  '鮱=lǎo',
  '鮲=fú',
  '鮳=kào',
  '鮴=xiū',
  '鮵=tuō',
  '鮶=jūn',
  '鮷=tí',
  '鮸=miǎn',
  '鮹=shāo',
  '鮺=zhǎ',
  '鮻=suō',
  '鮼=qīn',
  '鮽=yú',
  '鮾=něi',
  '鮿=zhé',
  '鯀=gǔn',
  '鯁=gěng',
  '鯂=sū',
  '鯃=wú',
  '鯄=qiú',
  '鯅=shān',
  '鯆=pū,bū',
  '鯇=huàn',
  '鯈=tiáo',
  '鯉=lǐ',
  '鯊=shā',
  '鯋=shā',
  '鯌=kào',
  '鯍=méng',
  '鯎=chéng',
  '鯏=lí',
  '鯐=zǒu',
  '�


// MatterDotNet Copyright (C) 2025
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or 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 Affero General Public License for more details.
// You should have received a copy of the GNU Affero General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.

using MatterDotNet.Protocol.Cryptography;

namespace Test
{
    public class ECTests
    {
        [Test]
        public void TestCompression()
        {
            string M = "02886E2F97ACE46E55BA9DD7242579F2993B64E16EF3DCAB95AFD497333D8FA12F";
            string N = "03D8BBD6C639C62937B04D997F38C3770719C629D7014D49A24B4F98BAA1292B49";

            BigIntegerPoint pt1 = new BigIntegerPoint(Convert.FromHexString(M));
            BigIntegerPoint pt2 = new BigIntegerPoint(Convert.FromHexString(N));
            Assert.That(Convert.ToHexString(pt1.ToBytes(true)), Is.EqualTo(M));
            Assert.That(Convert.ToHexString(pt2.ToBytes(true)), Is.EqualTo(N));
        }

        [Test]
        public void TestDecompression()
        {
            Assert.That(Convert.ToHexString(SPAKE2Plus.M.ToBytes(false)), Is.EqualTo("04886e2f97ace46e55ba9dd7242579f2993b64e16ef3dcab95afd497333d8fa12f5ff355163e43ce224e0b0e65ff02ac8e5c7be09419c785e0


)] = FMA(T1f, T1e, T1d * T1g);
		    }
	       }
	       {
		    E T1k, T1q, T1o, T1s;
		    {
			 E T1i, T1j, T1m, T1n;
			 T1i = Tw - TD;
			 T1j = KP707106781 * (T1a - T19);
			 T1k = T1i - T1j;
			 T1q = T1i + T1j;
			 T1m = T17 - T10;
			 T1n = KP707106781 * (TN - TW);
			 T1o = T1m - T1n;
			 T1s = T1m + T1n;
		    }
		    {
			 E T1h, T1l, T1p, T1r;
			 T1h = W[26];
			 T1l = W[27];
			 Rp[WS(rs, 7)] = FNMS(T1l, T1o, T1h * T1k);
			 Rm[WS(rs, 7)] = FMA(T1h, T1o, T1l * T1k);
			 T1p = W[10];
			 T1r = W[11];
			 Rp[WS(rs, 3)] = FNMS(T1r, T1s, T1p * T1q);
			 Rm[WS(rs, 3)] = FMA(T1p, T1s, T1r * T1q);
		    }
	       }
	       {
		    E T2g, T2u, T2s, T2w;
		    {
			 E T20, T2f, T2o, T2r;
			 T20 = T1S - T1Z;
			 T2f = T27 - T2e;
			 T2g = T20 - T2f;
			 T2u = T20 + T2f;
			 T2o = T2k - T2n;
			 T2r = T2p - T2q;
			 T2s = T2o - T2r;
			 T2w = T2o + T2r;
		    }
		    {
			 E T1P, T2h, T2t, T2v;
			 T1P = W[24];
			 T2h = W[25];
			 Ip[WS(rs, 6)] = FNMS(T2h, T2s, T1P * T2g);
			 Im[WS(rs, 6)] = FMA(T2h, T2g, T1P * T2s);
			 T2t = W[8];
			 T2v = W[9];
			 Ip[WS(rs, 2)] = FNMS(T2v, T2w, T2t * T2u);
			 Im[WS(rs, 2)] = FMA(T2v, T2u, T2t * T2w);
		    }
	       }
	       {
		    E T2A, T2G, T2E, T2I;
		    {
			 E T2y, T2z, T2C, T2D;
			 T2y = T1S + T1Z;
			 T2z = T2p + T2q;
			 T2A = T2y - T2z;
			 T2G = T2y + T2z;
			 T2C = T2k + T2n;
			 T2D = T2e + T27;
			 T2E = T2C - T2D;
			 T2I = T2C + T2D;
		    }
		    {
			 E T2x, T2B, T2F, T2H;
			 T2x = W[16];
			 T2B = W[17];
			 Ip[WS(rs, 4)] = FNMS(T2B, T2E, T2x * T2A);
			 Im[WS(rs, 4)] = FMA(T2x, T2E, T2B * T2A);
			 T2F = W[0];
			 T2H = W[1];
			 Ip[0] = FNMS(T2H, T2I, T2F * T2G);
			 Im[0] = FMA(T2F, T2I, T2H * T2G);
		    }
	       }
	       {
		    E T1G, T1M, T1K, T1O;
		    {
			 E T1E, T1F, T1I, T1J;
			 T1E = T7 - Te;
			 T1F = T1A - T1z;
			 T1G = T1E - T1F;
			 T1M = T1E + T1F;
			 T1I = T1w - T1x;
			 T1J = Tm - Tt;
			 T1K = T1I - T1J;
			 T1O = T1J + T1I;
		    }
		    {
			 E T1D, T1H, T1L, T1N;
			 T1D = W[22];
			 T1H = W[23];
			 Rp[WS(rs, 6)] = FNMS(T1H, T1K, T1D * T1G);
			 Rm[WS(rs, 6)] = FMA(T1D, T1K, T1H * T1G);
			 T1L = W[6];
			 T1N = W[7];
			 Rp[WS(rs, 2)] = FNMS(T1N, T1O, T1L * T1M);
			 Rm[WS(rs, 2)] = FMA(T1L, T1O, T1N * T1M);
		    }
	       }
	  }
     }
}

static const tw_instr twinstr[] = {
     {TW_FULL, 1, 16},
     {TW_NEXT, 1, 0}
};

static const hc2c_desc desc = { 16, "hc2cb_16", twinstr, &GENUS, {136, 46, 38, 0} };

void X(codelet_hc2cb_16) (planner *p) {
     X(khc2c_register) (p, hc2cb_16, &desc, HC2C_VIA_RDFT);
}
#endif				/* HAVE_FMA */


3.9.4" || appVersionName == "3.9.5" ||
        appVersionName == "3.9.6" || appVersionName == "3.9.7" ||
        appVersionName == "3.9.8")) {
    sheet.getRange(emptyRow,CARRIER_PHASE_ADR+1).setValue(accumulatedDeltaRange);
  }

  sheet.getRange(emptyRow,GNSS_ANTENNA_INFO+1).setValue(gnssAntennaInfo);
  sheet.getRange(emptyRow,APP_VERSION_NAME+1).setValue(appVersionName);
  sheet.getRange(emptyRow,APP_VERSION_CODE+1).setValue(appVersionCode);
  sheet.getRange(emptyRow,APP_BUILD_FLAVOR+1).setValue(appBuildFlavor);
  sheet.getRange(emptyRow,USER_LOCATION_COUNTRY_CODE+1).setValue(userCountry);
  sheet.getRange(emptyRow,DATE+1).setValue(date + " (GMT)");
  sheet.getRange(emptyRow,DATE_ISO+1).setValue(dateIso);

  // Check to make sure request contains the below parameters (they were added later in chunks)
  if (typeof(e.parameter.androidBuildIncremental) != "undefined") {
    var androidBuildIncremental = e.parameter.androidBuildIncremental;
    var androidBuildCodename = e.parameter.androidBuildCodename;
    sheet.getRange(emptyRow,ANDROID_SOFTWARE_BUILD+1).setValue(androidBuildIncremental);
    sheet.getRange(emptyRow,ANDROID_SOFTWARE_CODENAME+1).setValue(androidBuildCodename);
  }
  if (typeof(e.parameter.numAntennas) != "undefined") {
    var numAntennas = e.parameter.numAntennas;
    var antennaCfs = e.parameter.antennaCfs;
    sheet.getRange(emptyRow,NUM_GNSS_ANTENNAS+1).setValue(numAntennas);
    sheet.getRange(emptyRow,GNSS_ANTENNA_CFS+1).setValue(antennaCfs);
  }

  if (typeof(e.parameter.device) != "undefined") {
    var device = e.parameter.device
    sheet.getRange(emptyRow,DEVICE+1).setValue(device);
  }

  return ContentService.createTextOutput("STATUS OK").setMimeType(ContentService.MimeType.TEXT);
}

// Based on code from https://stackoverflow.com/questions/6882104/faster-way-to-find-the-first-empty-row-in-a-google-sheet-column
function getFirstEmptyRowByColumnB(sheet) {
  return sheet.getLastRow() + 1;
}

// Populate device names based on model using https://storage.googleapis.com/play_public/supported_devices.csv
// Runs on a timer every 12 hours
function addDeviceName() {
  var GOOGLE_DOC_ID = "1jXtRCoEnnFNWj6_oFlVWflsf-b0jkfZpyhN-BXsv7uo";

  var ss = SpreadsheetApp.openById(GOOGLE_DOC_ID);
  var sheet = ss.getSheets()[0];

  // Download and parse Google CSV that contains model->name mapping
  var googleResponse = UrlFetchApp.fetch("https://storage.googleapis.com/play_public/supported_devices.csv");
  var googleCsvData = Utilities.parseCsv(googleResponse.getContentText("UTF-16"));

  // Download and parse GPSTest CSV that contains model->name mapping for devices not in the Google CSV
  var gpsTestResponse = UrlFetchApp.fetch("https://github.com/barbeau/gpstest/raw/master/data/device_models_supplement.csv");
  var gpsTestCsvData = Utilities.parseCsv(gpsTestResponse.getContentText("UTF-8"));

  // Loop through rows with


using System.Runtime.CompilerServices;

namespace Aardvark.Base
{
    // AUTO GENERATED CODE - DO NOT CHANGE!

    //# foreach (var isDouble in new[] { false, true }) {
    //#   var ftype = isDouble ? "double" : "float";
    //#   var ftype2 = isDouble ? "float" : "double";
    //#   var tc = isDouble ? "d" : "f";
    //#   var tc2 = isDouble ? "f" : "d";
    //#   var type = "Triangle2" + tc;
    //#   var type2 = "Triangle2" + tc2;
    //#   var v2t = "V2" + tc;
    //#   var box2t = "Box2" + tc;
    //#   var plane2t = "Plane2" + tc;
    //#   var circle2t = "Circle2" + tc;
    //#   var iboundingcircle2t = "IBoundingCircle2" + tc;
    //#   var half = isDouble ? "0.5" : "0.5f";
    //#   var pi = isDouble ? "Constant.Pi" : "ConstantF.Pi";
    //#   var eps = isDouble ? "1e-6" : "1e-4f";
    #region __type__

    /// <summary>
    /// A two-dimensional triangle represented by its three points.
    /// </summary>
    public partial struct __type__ : __iboundingcircle2t__
    {
        #region Geometric Properties

        /// <summary>
        /// Returns the area of the triangle.
        /// </summary>
        public readonly __ftype__ Area
        {
            [MethodImpl(MethodImplOptions.AggressiveInlining)]
            get => Triangle.Area(this);
        }

        /// <summary>
        /// Returns whether the triangle is degenerated, i.e. its area is zero.
        /// </summary>
        public readonly bool IsDegenerated
        {
            [MethodImpl(MethodImplOptions.AggressiveInlining)]
            get => Triangle.IsDegenerated(this);
        }

        /// <summary>
        /// Returns a negative value if the triangle has a
        /// counter-clockwise winding order, and a positive value if it has a clockwise winding-order.
        /// The magnitude is twice the area of the triangle.
        /// </summary>
        public readonly __ftype__ WindingOrder
        {
            [MethodImpl(MethodImplOptions.AggressiveInlining)]
            get => Triangle.WindingOrder(this);
        }

        #endregion

        #region CircumCircle

        public readonly __circle2t__ CircumCircle
        {
            get
            {
                ComputeCircumCircleSquared(P0, P1, P2, out __v2t__ center, out __ftype__ radiusSquared);
                return new __circle2t__(center, radiusSquared.Sqrt());
            }
        }

        public readonly __circle2t__ CircumCircleSquared
        {
            get
            {
                ComputeCircumCircleSquared(P0, P1, P2, out __v2t__ center, out __ftype__ radiusSquared);
                return new __circle2t__(center, radiusSquared);
            }
        }

        public static void ComputeCircumCircleSquared(
            __v2t__ p0, __v2t__ p1, __v2t__ p2,
            out __v2t__ center, out __ftype__ radiusSquared)
        {
            __ftype__ y01abs = Fun.Abs(p0.Y - p1.Y);
            __ftype__ y12abs = Fun.Abs(p1.Y - p2.Y);

            if (y01abs < Constant<__ftype__>.PositiveTinyValue
                && y12abs < Constant


滤有效的活动"""
        valid_events = []
        current_time = datetime.now()

        for event in events:
            # 检查时间有效性
            event_time = event.get("time", "")
            if self.is_event_valid(event_time, current_time):
                # 检查是否有报名链接
                if event.get("registration_links") or event.get("main_link"):
                    valid_events.append(event)

        return valid_events

    def is_event_valid(self, event_time: str, current_time: datetime) -> bool:
        """检查活动时间是否有效"""
        if not event_time or event_time in ["待确认", "None", ""]:
            return True  # 时间待确认的活动也保留

        # 简单的时间检查逻辑
        if "2025" in event_time:
            return True
        if "2024" in event_time:
            return False

        return True  # 默认保留

    def save_search_results(self, events: List[Dict]):
        """保存搜索结果到文件"""
        print(f"\n💾 保存搜索结果到: {self.results_file}")

        with open(self.results_file, "w", encoding="utf-8") as f:
            f.write(f"AI Agent活动搜索结果\n")
            f.write(f"搜索时间: {datetime.now().isoformat()}\n")
            f.write(f"总计活动: {len(events)}\n")
            f.write("=" * 50 + "\n\n")

            for i, event in enumerate(events, 1):
                f.write(f"活动 {i}:\n")
                f.write(f"标题: {event.get('title', '未知')}\n")
                f.write(f"时间: {event.get('time', '待确认')}\n")
                f.write(f"地点: {event.get('location', '待确认')}\n")
                f.write(f"类型: {event.get('type', '待确认')}\n")
                f.write(f"主链接: {event.get('main_link', '待确认')}\n")

                reg_links = event.get("registration_links", [])
                if reg_links:
                    f.write("报名链接:\n")
                    for link in reg_links:
                        f.write(f"  - {link}\n")
                else:
                    f.write("报名链接: 待确认\n")

                f.write(f"描述: {event.get('description', '无描述')}\n")
                f.write(f"免费: {'是' if event.get('is_free') else '否'}\n")
                f.write("-" * 50 + "\n\n")

        print(f"✅ 搜索结果已保存")

async def main():
    """主函数"""
    search_agent = AIEventSearchAgent()

    # 执行全面搜索
    events = await search_agent.comprehensive_search()

    # 过滤有效活动
    valid_events = search_agent.filter_valid_events(events)

    # 保存结果
    search_agent.save_search_results(valid_events)

    # 输出总结
    print(f"\n🎉 搜索完成!")
    print(f"📊 总计找到: {len(events)} 个活动")
    print(f"✅ 有效活动: {len(valid_events)} 个")
    print(f"💾 结果文件: {search_agent.results_file}")

    return search_agent.results_file

if __name__ == "__main__":
    asyncio.run(main())


					8001,
								8007
							}
						}
					}
				},
				{
					triggerType = 8,
					waveIndex = 900,
					preWaves = {
						103
					},
					triggerParams = {}
				}
			}
		}
	},
	fleet_prefab = {}
}


4,
    "package-up": F3D5,
    "package-variant": F3D6,
    "package-variant-closed": F3D7,
    "page-first": F600,
    "page-last": F601,
    "page-layout-body": F6F9,
    "page-layout-footer": F6FA,
    "page-layout-header": F6FB,
    "page-layout-sidebar-left": F6FC,
    "page-layout-sidebar-right": F6FD,
    "palette": F3D8,
    "palette-advanced": F3D9,
    "panda": F3DA,
    "pandora": F3DB,
    "panorama": F3DC,
    "panorama-fisheye": F3DD,
    "panorama-horizontal": F3DE,
    "panorama-vertical": F3DF,
    "panorama-wide-angle": F3E0,
    "paper-cut-vertical": F3E1,
    "paperclip": F3E2,
    "parking": F3E3,
    "passport": F7E2,
    "pause": F3E4,
    "pause-circle": F3E5,
    "pause-circle-outline": F3E6,
    "pause-octagon": F3E7,
    "pause-octagon-outline": F3E8,
    "paw": F3E9,
    "paw-off": F657,
    "pen": F3EA,
    "pencil": F3EB,
    "pencil-box": F3EC,
    "pencil-box-outline": F3ED,
    "pencil-circle": F6FE,
    "pencil-circle-outline": F775,
    "pencil-lock": F3EE,
    "pencil-off": F3EF,
    "pentagon": F6FF,
    "pentagon-outline": F700,
    "percent": F3F0,
    "periodic-table-co2": F7E3,
    "periscope": F747,
    "pharmacy": F3F1,
    "phone": F3F2,
    "phone-bluetooth": F3F3,
    "phone-classic": F602,
    "phone-forward": F3F4,
    "phone-hangup": F3F5,
    "phone-in-talk": F3F6,
    "phone-incoming": F3F7,
    "phone-locked": F3F8,
    "phone-log": F3F9,
    "phone-minus": F658,
    "phone-missed": F3FA,
    "phone-outgoing": F3FB,
    "phone-paused": F3FC,
    "phone-plus": F659,
    "phone-settings": F3FD,
    "phone-voip": F3FE,
    "pi": F3FF,
    "pi-box": F400,
    "piano": F67C,
    "pig": F401,
    "pill": F402,
    "pillar": F701,
    "pin": F403,
    "pin-off": F404,
    "pine-tree": F405,
    "pine-tree-box": F406,
    "pinterest": F407,
    "pinterest-box": F408,
    "pipe": F7E4,
    "pipe-disconnected": F7E5,
    "pistol": F702,
    "pizza": F409,
    "plane-shield": F6BA,
    "play": F40A,
    "play-box-outline": F40B,
    "play-circle": F40C,
    "play-circle-outline": F40D,
    "play-pause": F40E,
    "play-protected-content": F40F,
    "playlist-check": F5C7,
    "playlist-minus": F410,
    "playlist-play": F411,
    "playlist-plus": F412,
    "playlist-remove": F413,


, z - 1.0f);
         result *= exp(-z * z) / z;
      }
      else if(z < 2.25)
      {
         // Maximum Deviation Found:                     1.418e-35
         // Expected Error Term:                         1.418e-35
         // Maximum Relative Change in Control Points:   1.316e-04
         // Max Error found at long double precision =   1.998462e-35
         static const T Y = 0.50250148773193359375f;
         static const T P[] = {
            -0.0201233630504573402185161184151016606L,
            0.0331864357574860196516686996302305002L,
            0.0716562720864787193337475444413405461L,
            0.0545835322082103985114927569724880658L,
            0.0236692635189696678976549720784989593L,
            0.00656970902163248872837262539337601845L,
            0.00120282643299089441390490459256235021L,
            0.000142123229065182650020762792081622986L,
            0.991531438367015135346716277792989347e-5L,
            0.312857043762117596999398067153076051e-6L,
         };
         static const T Q[] = {
            1L,
            2.13506082409097783827103424943508554L,
            2.06399257267556230937723190496806215L,
            1.18678481279932541314830499880691109L,
            0.447733186643051752513538142316799562L,
            0.11505680005657879437196953047542148L,
            0.020163993632192726170219663831914034L,
            0.00232708971840141388847728782209730585L,
            0.000160733201627963528519726484608224112L,
            0.507158721790721802724402992033269266e-5L,
            0.18647774409821470950544212696270639e-12L,
         };
         result = Y + tools::evaluate_polynomial(P, z - 1.5f) / tools::evaluate_polynomial(Q, z - 1.5f);
         result *= exp(-z * z) / z;
      }
      else if (z < 3)
      {
         // Maximum Deviation Found:                     3.575e-36
         // Expected Error Term:                         3.575e-36
         // Maximum Relative Change in Control Points:   7.103e-05
         // Max Error found at long double precision =   5.794737e-36
         static const T Y = 0.52896785736083984375f;
         static const T P[] = {
            -0.00902152521745813634562524098263360074L,
            0.0145207142776691539346923710537580927L,
            0.0301681239582193983824211995978678571L,
            0.0215548540823305814379020678660434461L,
            0.00864683476267958365678294164340749949L,
            0.00219693096885585491739823283511049902L,
            0.000364961639163319762492184502159894371L,
            0.388174251026723752769264051548703059e-4L,
            0.241918026931789436000532513553594321e-5L,
            0.6765866254724235081589


Week3", fields = listOf("cleaned_text"))
    }

    @Test
    fun getsCleanedTextElPais() {
        checkFixture(site = "elpais", fields = listOf("cleaned_text"))
    }

    @Test
    fun getsCleanedTextTechcrunch() {
        checkFixture(site = "techcrunch1", fields = listOf("cleaned_text"))
    }

    @Test
    fun getsCleanedTextFoxNews() {
        checkFixture(site = "foxNews", fields = listOf("cleaned_text"))
    }

    @Test
    fun getsCleanedTextHuffingtonPost() {
        checkFixture(site = "huffingtonPost2", fields = listOf("cleaned_text"))
        checkFixture(site = "testHuffingtonPost", fields = listOf("cleaned_text", "description", "title"))
    }

    @Test
    fun getsCleanedTextESPN() {
        checkFixture(site = "espn", fields = listOf("cleaned_text"))
    }

    @Test
    fun getsCleanedTextTime2() {
        checkFixture(site = "time", fields = listOf("cleaned_text"))
    }

    @Test
    fun getsCleanedTextCNET() {
        checkFixture(site = "cnet", fields = listOf("cleaned_text"))
    }

//    @Test
//    fun getsCleanedTextSch() {
//        checkFixture(site = "sch1", fields = listOf("cleaned_text"))
//    }

    @Test
    fun getsCleanedTextKeras() {
        checkFixture(site = "keras", fields = listOf("cleaned_text"))
    }

    @Test
    fun getsCleanedTextYahoo() {
        checkFixture(site = "yahoo", fields = listOf("cleaned_text"))
    }

    @Test
    fun getsCleanedTextPolitico() {
        checkFixture(site = "politico", fields = listOf("cleaned_text"))
    }

    @Test
    fun getsCleanedTextGooseRegressions() {
        checkFixture(site = "issue4", fields = listOf("cleaned_text"))
        checkFixture(site = "issue24", fields = listOf("cleaned_text"))
        checkFixture(site = "issue25", fields = listOf("cleaned_text"))
        checkFixture(site = "issue28", fields = listOf("cleaned_text"))
    }

    @Test
    fun getsCleanedTextGizmodo() {
        checkFixture(site = "gizmodo1", fields = listOf("cleaned_text", "description", "keywords"))
    }

    @Test
    fun getsCleanedTextMashable() {
        checkFixture(site = "mashable_issue_74", fields = listOf("cleaned_text"))
    }

    @Test
    fun getsCleanedTextUSAToday() {
        checkFixture(site = "usatoday_issue_74", fields = listOf("cleaned_text"))
        checkFixture(site = "usatoday1", fields = listOf("cleaned_text"))
    }

    @Test
    fun getsCleanedTextdCurtis() {
        checkFixture(site = "dcurtis", fields = listOf("cleaned_text"))
    }

    @Test
    fun getsCleanedTagsTheVerge() {
        checkFixture(site = "theverge2", fields = listOf("tags"))
    }

    private fun cleanTestingTest(newText: String, originalText: String): String {
        return newText.replace("""\n\n""", " ").replace("""\ \ """, " ")
            .substring(0, Math.min(newText.length, originalText.length))
    }

    private fun cleanOrigText(text: String): String {
        return text.replace("""\n\n""", " ")
    }

    fun checkFixture(site: String, fields: List<String>) {
        val html = readFileFull("./fixtures/test_$site.html")
        val orig = parseJson(readFileFull("./fixtures/test_$site.json"))
        val data = Essence.extract(html)

        val expected = orig["expected"]
        for (field in fields) {
            when (field) {
                "title" -> {
                    assertEquals(expected["title"].asText(), data.title)
                }
                "cleaned_text" -> {
                    val origText = cleanOrigText(expected["cleaned_text"].asText()


#ifndef TTKPUZZLEWIDGET_H
#define TTKPUZZLEWIDGET_H

/***************************************************************************
 * This file is part of the TTK Widget Tools project
 * Copyright (C) 2015 - 2025 Greedysky Studio

 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation; either version 3 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 Lesser General Public License for more details.

 * You should have received a copy of the GNU Lesser General Public License along
 * with this program; If not, see <http://www.gnu.org/licenses/>.
 ***************************************************************************/

#include <QSlider>
#include "ttkmoduleexport.h"

/*!
 * @author Greedysky <greedysky@163.com>
 */
class TTK_MODULE_EXPORT TTKPuzzleItemWidget : public QWidget
{
    Q_OBJECT
public:
    explicit TTKPuzzleItemWidget(QWidget *parent = nullptr);

    void setSquareWidth(int squareWidth);
    void setSquareRadius(int squareRadius);
    void setPixmap(const QString &pixmap);

public Q_SLOTS:
    void updatePixmap();
    void setValue(int value);

private:
    virtual void paintEvent(QPaintEvent *event) override final;

    QString m_pixmap;
    QPoint m_offsetPoint;
    int m_value, m_squareWidth, m_squareRadius;

};

/*!
 * @author Greedysky <greedysky@163.com>
 */
class TTK_MODULE_EXPORT TTKPuzzleWidget : public QWidget
{
    Q_OBJECT
    TTK_DECLARE_MODULE(TTKPuzzleWidget)
public:
    explicit TTKPuzzleWidget(QWidget *parent = nullptr);

    void setSquareWidth(int squareWidth);
    void setSquareRadius(int squareRadius);
    void setPixmap(const QString &pixmap);

    virtual QSize sizeHint() const override final;

private:
    QSlider *m_slider;
    TTKPuzzleItemWidget *m_item;

};

#endif // TTKPUZZLEWIDGET_H


ute, 1999

 SANS is a respected
organisation,  this guide is part of a well-known series, and Ranch has
previously written  the useful
Trinity  OS guide to securing Linux, so my guess would be this is a
pretty good  book. I haven't read it yet, so I'm not certain. It can be
ordered online  from SANS.

 Bruce Schneier Applied Cryptography,
Second  Edition

 John Wiley & Sons, 1996

 ISBN 0-471-12845-7 hardcover

 ISBN 0-471-11709-9 paperback

 A standard reference on computer cryptography. For more recent
essays, see  the author's
company's web  site.

 Bruce Schneier Secrets and Lies

 Wiley 2000, ISBN 0-471-25311-1

 An interesting discussion of security and privacy issues, written
with more of an "executive overview" approach rather than a narrow
focus on the technical issues. Highly recommended.

 Scott, Wolfe and Irwin Virtual Private
 Networks

 2nd edition, O'Reilly 1999 ISBN: 1-56592-529-7

 This is the only O'Reilly book, out of a dozen I own, that I'm
disappointed  with. It deals mainly with building VPNs with various
proprietary tools  -- PPTP, SSH,
Cisco PIX, ... --  and touches only lightly on IPSEC-based approaches.

That said, it appears to deal competently with what it does cover
and it  has readable explanations of many basic VPN and security
concepts. It may be  exactly what some readers require, even if I find
the emphasis  unfortunate.

 Kurt Seifried Linux Administrator's Security
 Guide

 Available online from
Security Portal. It has  fairly extensive coverage of IPSEC.

 Richard E Smith Internet Cryptography

 ISBN 0-201-92480-3, Addison Wesley, 1997

 See the book's
home page

 Neal Stephenson Cryptonomicon

 Hardcover ISBN -380-97346-4, Avon, 1999.

 A novel in which cryptography and the net figure prominently.
Highly recommended: I liked it enough I immediately went out
and bought all the author's other books.

 There is also a paperback edition. Sequels are expected.

 Stevens and Wright TCP/IP Illustrated

 Addison-Wesley

Vol. I: The Protocols 1994 ISBN:0-201-63346-9

Vol. II: The Implementation 1995 ISBN:0-201-63354-X

Vol. III: TCP for Transactions, HTTP, NNTP, and the UNIX Domain
 Protocols 1996 ISBN: 0-201-63495-3

 If you need to


ELEMENTS), lParam = new icon (hIcon if TDF_USE_HICON_* was set, PCWSTR otherwise)
        }

        internal enum TaskDialogNotifications
        {
            Created = 0,
            Navigated = 1,
            ButtonClicked = 2,            // wParam = Button ID
            HyperlinkClicked = 3,         // lParam = (LPCWSTR)pszHREF
            Timer = 4,                     // wParam = Milliseconds since dialog created or timer reset
            Destroyed = 5,
            RadioButtonClicked = 6,      // wParam = Radio Button ID
            Constructed = 7,
            VerificationClicked = 8,      // wParam = 1 if checkbox checked, 0 if not, lParam is unused and always 0
            Help = 9,
            ExpandButtonClicked = 10    // wParam = 0 (dialog is now collapsed),


using System;
using System.Runtime.InteropServices;
using System.Security;
using BulletSharp.Math;

namespace BulletSharp
{
	public class CylinderShape : ConvexInternalShape
	{
		internal CylinderShape(IntPtr native)
			: base(native)
		{
		}

		public CylinderShape(Vector3 halfExtents)
			: base(btCylinderShape_new(ref halfExtents))
		{
		}

        public CylinderShape(float halfExtentX, float halfExtentY, float halfExtentZ)
            : base(btCylinderShape_new2(halfExtentX, halfExtentY, halfExtentZ))
        {
        }

		public Vector3 HalfExtentsWithMargin
		{
			get
			{
				Vector3 value;
				btCylinderShape_getHalfExtentsWithMargin(_native, out value);
				return value;
			}
		}

		public Vector3 HalfExtentsWithoutMargin
		{
			get
			{
				Vector3 value;
				btCylinderShape_getHalfExtentsWithoutMargin(_native, out value);
				return value;
			}
		}

		public float Radius
		{
			get { return btCylinderShape_getRadius(_native); }
		}

		public int UpAxis
		{
			get { return btCylinderShape_getUpAxis(_native); }
		}

		[DllImport(Native.Dll, CallingConvention = Native.Conv), SuppressUnmanagedCodeSecurity]
		static extern IntPtr btCylinderShape_new([In] ref Vector3 halfExtents);
        [DllImport(Native.Dll, CallingConvention = Native.Conv), SuppressUnmanagedCodeSecurity]
        static extern IntPtr btCylinderShape_new2(float halfExtentX, float halfExtentY, float halfExtentZ);
		[DllImport(Native.Dll, CallingConvention = Native.Conv), SuppressUnmanagedCodeSecurity]
		static extern void btCylinderShape_getHalfExtentsWithMargin(IntPtr obj, [Out] out Vector3 value);
		[DllImport(Native.Dll, CallingConvention = Native.Conv), SuppressUnmanagedCodeSecurity]
		static extern void btCylinderShape_getHalfExtentsWithoutMargin(IntPtr obj, [Out] out Vector3 value);
		[DllImport(Native.Dll, CallingConvention = Native.Conv), SuppressUnmanagedCodeSecurity]
		static extern float btCylinderShape_getRadius(IntPtr ob


se(aoa_wind);

    // calculate relative velocity in body coordinates
    aoa_velocity = aoa_velocity - aoa_wind;
    const float vel_len = aoa_velocity.length();

    // do not calculate if speed is too low
    if (vel_len < 2.0) {
        _AOA = 0;
        _SSA = 0;
        return;
    }

    // Calculate AOA and SSA
    if (aoa_velocity.x > 0) {
        _AOA = degrees(atanf(aoa_velocity.z / aoa_velocity.x));
    } else {
        _AOA = 0;
    }

    _SSA = degrees(safe_asin(aoa_velocity.y / vel_len));
#endif
}

// return current AOA
float AP_AHRS::getAOA(void)
{
    update_AOA_SSA();
    return _AOA;
}

// return calculated SSA
float AP_AHRS::getSSA(void)
{
    update_AOA_SSA();
    return _SSA;
}

// rotate a 2D vector from earth frame to body frame
Vector2f AP_AHRS::rotate_earth_to_body2D(const Vector2f &ef) const
{
    return Vector2f(ef.x * _cos_yaw + ef.y * _sin_yaw,
                    -ef.x * _sin_yaw + ef.y * _cos_yaw);
}

// rotate a 2D vector from earth frame to body frame
Vector2f AP_AHRS::rotate_body_to_earth2D(const Vector2f &bf) const
{
    return Vector2f(bf.x * _cos_yaw - bf.y * _sin_yaw,
                    bf.x * _sin_yaw + bf.y * _cos_yaw);
}

// log ahrs home and EKF origin to dataflash
void AP_AHRS::Log_Write_Home_And_Origin()
{
    DataFlash_Class *df = DataFlash_Class::instance();
    if (df == nullptr) {
        return;
    }
#if AP_AHRS_NAVEKF_AVAILABLE
    // log ekf origin if set
    Location ekf_orig;
    if (get_origin(ekf_orig)) {
        df->Log_Write_Origin(LogOriginType::ekf_origin, ekf_orig);
    }
#endif

    // log ahrs home if set
    if (home_is_set()) {
        df->Log_Write_Origin(LogOriginType::ahrs_home, _home);
    }
}

// singleton instance
AP_AHRS *AP_AHRS::_singleton;

namespace AP {

AP_AHRS &ahrs()
{
    return *AP_AHRS::get_singleton();
}

}
/*
   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 3 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.  If not, see <http://www.gnu.org/licenses/>.
 */

#include "AP_Beacon_Backend.h"
// debug
#include <stdio.h>

/*
  base class constructor.
  This incorporates initialisation as well.
*/
AP_Beacon_Backend::AP_Beacon_Backend(AP_Beacon &frontend) :
    _frontend(frontend)
{
}

// set vehicle position:
// pos should be in the beacon's local frame in meters
// accuracy_estimate is also in meters


turn true;
            });
            if (aboolean1[0]) {
               aint[1] = Math.min(aint[1], p_165980_);
               aint[4] = Math.max(aint[4], p_165980_);
               aboolean[0] = true;
            }

            return true;
         });
         if (aboolean[0]) {
            aint[0] = Math.min(aint[0], p_82672_);
            aint[3] = Math.max(aint[3], p_82672_);
         }

         return true;
      });
      bitsetdiscretevoxelshape.xMin = aint[0];
      bitsetdiscretevoxelshape.yMin = aint[1];
      bitsetdiscretevoxelshape.zMin = aint[2];
      bitsetdiscretevoxelshape.xMax = aint[3] + 1;
      bitsetdiscretevoxelshape.yMax = aint[4] + 1;
      bitsetdiscretevoxelshape.zMax = aint[5] + 1;
      return bitsetdiscretevoxelshape;
   }

   protected static void forAllBoxes(DiscreteVoxelShape p_165964_, DiscreteVoxelShape.IntLineConsumer p_165965_, boolean p_165966_) {
      BitSetDiscreteVoxelShape bitsetdiscretevoxelshape = new BitSetDiscreteVoxelShape(p_165964_);

      for(int i = 0; i < bitsetdiscretevoxelshape.ySize; ++i) {
         for(int j = 0; j < bitsetdiscretevoxelshape.xSize; ++j) {
            int k = -1;

            for(int l = 0; l <= bitsetdiscretevoxelshape.zSize; ++l) {
               if (bitsetdiscretevoxelshape.isFullWide(j, i, l)) {
                  if (p_165966_) {
                     if (k == -1) {
                        k = l;
                     }
                  } else {
                     p_165965_.consume(j, i, l, j + 1, i + 1, l + 1);
                  }
               } else if (k != -1) {
                  int i1 = j;
                  int j1 = i;
                  bitsetdiscretevoxelshape.clearZStrip(k, l, j, i);

                  while(bitsetdiscretevoxelshape.isZStripFull(k, l, i1 + 1, i)) {
                     bitsetdiscretevoxelshape.clearZStrip(k, l, i1 + 1, i);
                     ++i1;
                  }

                  while(bitsetdiscretevoxelshape.isXZRectangleFull(j, i1 + 1, k, l, j1 + 1)) {
                     for(int k1 = j; k1 <= i1; ++k1) {
                        bitsetdiscretevoxelshape.clearZStrip(k, l, k1, j1 + 1);
                     }

                     ++j1;
                  }

                  p_165965_.consume(j, i, k, i1 + 1, j1 + 1, l);
                  k = -1;
               }
            }
         }
      }

   }

   private boolean isZStripFull(int p_82609_, int p_82610_, int p_82611_, int p_82612_) {
      if (p_82611_ < this.xSize && p_82612_ < this.ySize) {
         return this.storage.nextClearBit(this.getIndex(p_82611_, p_82612_, p_82609_)) >= this.getIndex(p_82611_, p_82612_, p_82610_);
      } else {
         return false;
      }


get pagingEnabled {
    return _objc_msgSend_91o635(this.ref.pointer, _sel_isPagingEnabled);
  }

  /// setPagingEnabled:
  set pagingEnabled(bool value) {
    _objc_msgSend_1s56lr9(this.ref.pointer, _sel_setPagingEnabled_, value);
  }

  /// isScrollEnabled
  bool get scrollEnabled {
    objc.checkOsVersionInternal('UIScrollView.isScrollEnabled', iOS: (false, (2, 0, 0)));
    return _objc_msgSend_91o635(this.ref.pointer, _sel_isScrollEnabled);
  }

  /// setScrollEnabled:
  set scrollEnabled(bool value) {
    objc.checkOsVersionInternal('UIScrollView.setScrollEnabled:', iOS: (false, (2, 0, 0)));
    _objc_msgSend_1s56lr9(this.ref.pointer, _sel_setScrollEnabled_, value);
  }

  /// showsVerticalScrollIndicator
  bool get showsVerticalScrollIndicator {
    objc.checkOsVersionInternal('UIScrollView.showsVerticalScrollIndicator', iOS: (false, (2, 0, 0)));
    return _objc_msgSend_91o635(this.ref.pointer, _sel_showsVerticalScrollIndicator);
  }

  /// setShowsVerticalScrollIndicator:
  set showsVerticalScrollIndicator(bool value) {
    objc.checkOsVersionInternal('UIScrollView.setShowsVerticalScrollIndicator:', iOS: (false, (2, 0, 0)));
    _objc_msgSend_1s56lr9(this.ref.pointer, _sel_setShowsVerticalScrollIndicator_, value);
  }

  /// showsHorizontalScrollIndicator
  bool get showsHorizontalScrollIndicator {
    objc.checkOsVersionInternal('UIScrollView.showsHorizontalScrollIndicator', iOS: (false, (2, 0, 0)));
    return _objc_msgSend_91o635(this.ref.pointer, _sel_showsHorizontalScrollIndicator);
  }

  /// setShowsHorizontalScrollIndicator:
  set showsHorizontalScrollIndicator(bool value) {
    objc.checkOsVersionInternal('UIScrollView.setShowsHorizontalScrollIndicator:', iOS: (false, (2, 0, 0)));
    _objc_msgSend_1s56lr9(this.ref.pointer, _sel_setShowsHorizontalScrollIndicator_, value);
  }

  /// indicatorStyle
  UIScrollViewIndicatorStyle get indicatorStyle {
    objc.checkOsVersionInternal('UIScrollView.indicatorStyle', iOS: (false, (2, 0, 0)));
    final _ret = _objc_msgSend_10fw709(this.ref.pointer, _sel_indicatorStyle);
    return UIScrollViewIndicatorStyle.fromValue(_ret);
  }

  /// setIndicatorStyle:
  set indicatorStyle(UIScrollViewIndicatorStyle value) {
    objc.checkOsVersionInternal('UIScrollView.setIndicatorStyle:', iOS: (false, (2, 0, 0)));
    _objc_msgSend_10eov2d(this.ref.pointer, _sel_setIndicatorStyle_, value.value);
  }

  /// verticalScrollIndicatorInsets
  UIEdgeInsets get verticalScrollIndicatorInsets {
    objc.checkOsVersionInternal('UIScrollView.verticalScrollIndicatorInsets', iOS: (false, (11, 1, 0)));
    final _ptr = pkg_ffi.calloc<UIEdgeInsets>();
    objc.useMsgSendVariants
        ? _objc_msgSend_ct4cu5Stret(_ptr, this.ref.pointer, _sel_verticalScrollIndicatorInsets)
        : _ptr.ref = _objc_msgSend_ct4cu5(this.ref.pointer, _sel_verticalScrollIndicatorInsets);
    final _finalizable = _ptr.cast<ffi.Uint8>().asTypedList(


RW

              0x0D00 + (4 * n)

                GICD_IGRPMODR<n>

              Interrupt Group Modifier Registers
              RW

              0x0E00 + (4 * n)

                GICD_NSACR<n>

              Non-secure Access Control Registers
              RW

              0x0F00

                GICD_SGIR

              Software Generated Interrupt Register
              WO

              0x0F10 + (4 * n)

                GICD_CPENDSGIR<n>

              SGI Clear-Pending Registers
              RW

              0x0F20 + (4 * n)

                GICD_SPENDSGIR<n>

              SGI Set-Pending Registers
              RW

              0x0F80 + (4 * n)

                GICD_INMIR<n>

              Non-maskable Interrupt Registers, x = 0 to 31
              RW

              0x1000 + (4 * n)

                GICD_IGROUPR<n>E

              Interrupt Group Registers (extended SPI range)
              RW

              0x1200 + (4 * n)

                GICD_ISENABLER<n>E

              Interrupt Set-Enable Registers
              RW

              0x1400 + (4 * n)

                GICD_ICENABLER<n>E

              Interrupt Clear-Enable Registers
              RW

              0x1600 + (4 * n)

                GICD_ISPENDR<n>E

              Interrupt Set-Pending Registers (extended SPI range)
              <


);
    }

    private void SwitchToPage(int page) {
        if (page < 0) {
            return;
        }
        if (page >= contentPages.Length) {
            Close();
            return;
        }

        currentPage = page;
        if (contentPages.Length > 1) {
            prevButton.Enabled = page > 0;
            pageLabel.Text = $"Page {page + 1} / {contentPages.Length}";
        } else {
            prevButton.Visible = false;
            pageLabel.Visible = false;
        }

        if (page < contentPages.Length - 1) {
            nextButton.Text = "Next";
        } else {
            nextButton.Text = "Close";
        }

        if (forceShowPages) {
            unlockPageTokenSource?.Cancel();
            unlockPageTokenSource?.Dispose();
            if (currentPage == maxAvailablePage) {
                unlockPageTokenSource = new CancellationTokenSource();
                nextButton.Enabled = false;

                var token = unlockPageTokenSource.Token;
                Task.Run(async () => {
                    await Task.Delay(MinPageTimeMS, token);
                    if (token.IsCancellationRequested) {
                        return;
                    }

                    maxAvailablePage = Math.Max(maxAvailablePage, currentPage + 1);
                    await Application.Instance.InvokeAsync(() => {
                        nextButton.Enabled = true;
                        Closeable = maxAvailablePage == contentPages.Length;
                    });
                }, token);
            } else {
                unlockPageTokenSource = null;
                nextButton.Enabled = true;
            }
        }

        bool firstLoad = scrollable.Content == null;
        scrollable.Content = null;
        scrollable.Content = contentPages[page].Value.Control;

        // Applying the proper size for the first page is already handled in the constructor
        if (!firstLoad) {
            UpdateLayout();
            ApplySize(null, EventArgs.Empty);
        }
    }
    void ApplySize(object? _1, EventArgs _2) {
        int width = ContentWidth, height = ContentHeight;

        var (_, content, image) = contentPages[currentPage].Value;

        // Gotta love the scrollable experience
        if (Eto.Platform.Instance.IsWpf) {
            scrollable.ScrollSize = new Size(
                Math.Max(0, width - (image?.Width ?? 0) - 20),


       |
| 文本编辑       | 编辑以下文本中的错误并提供正确的语法： "昨天我去了商场，然后买了一些水果，但是我忘记带现金。"                                                                                |
| 网页设计       | 在设计一个适用于手机和电脑的网页时，需要考虑哪些方面？                                                                                |
| 电影推荐       | 推荐三部2019年以来上映的好看的电影，并简要说明原因。                                                                                |
| 健康咨询       | 我每天晚上睡觉前总会感到心跳加速，这正常吗？如果不是，应该怎么处理呢？                                                                                |
| 餐厅推荐       | 推荐在北京市中心附近价格适中、口味不错的餐厅，并简要说明推荐理由。                                                                                |
| 旅游攻略       | 请分享一篇广西环海南岛自驾游的攻略，包括路线规划、必去景点、美食推荐等。                                                                                |
| 股票分析       | 分析中国平安(601318)股票最近一个月的表现，并预测未来趋势。                                                                                |
| 翻译服务       | 将以下英文句子翻译成中文: "The quick brown fox jumps over the lazy dog."                                                                                |
| 科技新闻       | 请摘选一则当前互联网行业的热点新闻，并简要介绍其背景和相关情况。                                                                                |
| 经济学讨论     | 紧缩货币政策与宽松货币政策各有什么优缺点？请举例说明。                                                                                |
|自然语言处理|什么是自然语言处理？|
|电影推荐|根据我的观影历史，你能推荐一些我可能会喜欢的电影吗？|
|商品对比|请比较并列出iPhone 12和Samsung Galaxy S21的优缺点。|
|餐厅推荐|我在纽约市寻找一家意大利餐厅，你能给我推荐一些吗？|
|文本摘要|请将这篇文章摘要为一段话。|
|购物建议|我最近想买一个新的笔记本电脑，根据我的需求和预算，你有什么建议吗？|
|语音识别|请转录我刚才说的话。|
|疾病诊断|根据我的症状，我可能患有哪种疾病？|
|邮件起草|请帮我起草一封向公司老板请求加薪的邮件。|
|情感分析|请分析这篇文章的情感色彩


rde-rs/serde/issues/1183
	#[serde(default)]
	#[serde(rename = "40729")]
	pub underlying_payment_stub_index_2_source: Option<i32>,
	/// Conditionally required when UnderlyingPaymentStubIndex2CurveUnit(40731) is specified.
	#[serde(skip_serializing_if = "Option::is_none")]
	#[serde(deserialize_with = "fix_common::workarounds::from_opt_str")]// https://github.com/serde-rs/serde/issues/1183
	#[serde(default)]
	#[serde(rename = "40730")]
	pub underlying_payment_stub_index_2_curve_period: Option<i32>,
	/// Conditionally required when UnderlyingPaymentStubIndex2CurvePeriod(40730) is specified.
	#[serde(skip_serializing_if = "Option::is_none")]
	#[serde(rename = "40731")]
	pub underlying_payment_stub_index_2_curve_unit: Option<String>,
	/// UnderlyingPaymentStubIndex2RateMultiplier
	#[serde(skip_serializing_if = "Option::is_none")]
	#[serde(deserialize_with = "fix_common::workarounds::from_opt_str")]// https://github.com/serde-rs/serde/issues/1183
	#[serde(default)]
	#[serde(rename = "40732")]
	pub underlying_payment_stub_index_2_rate_multiplier: Option<f64>,
	/// UnderlyingPaymentStubIndex2RateSpread
	#[serde(skip_serializing_if = "Option::is_none")]
	#[serde(deserialize_with = "fix_common::workarounds::from_opt_str")]// https://github.com/serde-rs/serde/issues/1183
	#[serde(default)]
	#[serde(rename = "40733")]
	pub underlying_payment_stub_index_2_rate_spread: Option<f64>,
	/// UnderlyingPaymentStubIndex2RateSpreadPositionType
	#[serde(skip_serializing_if = "Option::is_none")]
	#[serde(deserialize_with = "fix_common::workarounds::from_opt_str")]// https://github.com/serde-rs/serde/issues/1183
	#[serde(default)]
	#[serde(rename = "40734")]
	pub underlying_payment_stub_index_2_rate_spread_position_type: Option<i32>,
	/// UnderlyingPaymentStubIndex2RateTreatment
	#[serde(skip_serializing_if = "Option::is_none")]
	#[serde(deserialize_with = "fix_common::workarounds::from_opt_str")]// https://github.com/serde-rs/serde/issues/1183
	#[serde(default)]
	#[serde(rename = "40735")]
	pub underlying_payment_stub_index_2_rate_treatment: Option<i32>,
	/// UnderlyingPaymentStubIndex2CapRate
	#[serde(skip_serializing_if = "Option::is_none")]
	#[serde(deserialize_with = "fix_common::workarounds::from_opt_str")]// https://github.com/serde-rs/serde/issues/1183
	#[serde(default)]
	#[serde(rename = "40736")]
	pub underlying_payment_stub_index_2_cap_rate: Option<f32>,
	/// UnderlyingPaymentStubIndex2FloorRate
	#[serde(skip_serializing_if = "Option::is_none")]
	#[serde(deserialize_with = "fix_common::workarounds::from_opt_str")]// https://github.com/serde-rs/serde/issues/1183
	#[serde


r y honor entre los Pico Tormenta."}, {"Dirígete al Valle de Alterac en las Laderas de Trabalomas. Delante de la entrada del túnel, encuentra al teniente Haggerdin y habla con él.","¡Por la gloria de Barbabronce!"}},
[7281] = {"Amor fraternal", {"Una tragedia... Mi hermano y yo enfrentados en el campo de batalla: un Comandante de los Pico Tormenta.","De los cuatro Comandantes de los Pico Tormenta, es sin duda alguna el más peligroso. Quizás si lo ejecutan, la reina alma en pena podría convertirlo como hizo conmigo, demostrarle cuán equivocado está...","En lo más profundo del territorio enemigo encontrarás a mi hermano. Ejecútalo y vuelve aquí. Confío en que serás capaz de cumplir esta misión, soldado.","Ah, soldado, no vayas en solitario."}, {"Viaja hasta el territorio de los Pico Tormenta y mata al comandante Karl Filis. Vuelve con el comandante Luis Philips cuando hayas completado la tarea."}},
[7282] = {"Amor fraternal", {"¡Hay que acabar con su sufrimiento, soldado! No sabe lo que hace Se ha convertido en un sirviente ciego de la temida reina alma en pena.","Realiza una incursión por la Tierra de Disputa y hasta lo más recóndito del territorio de los Lobo Gélido. Encuentra a mi hermano y acaba con él. Hay que poner fin a su tormento."}, {"Viaja hasta el territorio de los Lobo Gélido y mata al comandante Luis Philips Vuelve con el comandante Karl Filis cuando hayas completado la tarea."}},
[7301] = {"Señores del Cielo caídos", {"Los tenemos prisioneros, <raza>. Me refiero a sus Comandantes del aire. Fue una batalla encarnizada en los cielos pero ¡al final cayeron! Desgraciadamente, abatieron a nuestros mejores pilotos en un contraataque sobre el Bastión Lobo Gélido. Tienes que averiguar qué ha sido de ellos.","Busca al oeste de Torre de la Punta y por el Bastión Lobo Gélido. Allí es donde se les vio por última vez. No dejes piedra por remover en estas zonas."}, {"Viaja hasta el territorio de los Lobo Gélido y busca al Comandante del aire Slidore, al comandante del aire Vipore y al comandante del aire Ichman. Vuelve con el comandante Duffy cuando hayas completado la misión."}},
[7302] = {"Señores del Cielo caídos", {"Nuestro apoyo aéreo es un caos, <nombre>. Han abatido a los Comandantes del aire sobre territorio enemigo. ¡Tienes que averiguar qué ha sido de ellos para que podamos intentar rescatarlos!","Se vio por última vez a Guse sobrevolando el Búnker Ala Gélida. Al alas de guerra de Jeztor se le avistó cerca de la Serrería Pico Tormenta. Mulverick... ese chalado temerario se estrelló cerca del Búnker Norte de Dun'Baldar.","Eso es todo lo que sé. ¡Vamos! No dejes piedra por remover en estas zonas."}, {"Averigua qué fue del comandante del aire Guse, el Comandante del aire Jeztor y el comandante del aire Mulverick. Vuelve con el comandante Mulfort cuando hayas completado la misión."}},
[7321] = {"Sopa de tortuga reconfortante", {"¿Quién dijo que los no-muertos no tenemos ni idea de cocinar? Mira mi receta secreta de sopa de tortuga, por ejemplo. ¡Sé de algun


Wallet Download (CSV format)

		<form id="WalletForChar" method="post" action="http://api.eve-online.com/char/WalletJournal.csv.xml.aspx">

UserID:	<input name="userID" type="text">

ApiKey:	<input name="apiKey" type="text">	(Full)

Numeric Character ID:	<input name="characterID" type="text">

<input type="submit">

		</form>

Skill Queue for a character

		<form id="SkillQueueForChar" method="post" action="http://api.eve-online.com/char/SkillQueue.xml.aspx">

UserID:	<input name="userID" type="text">

ApiKey:	<input name="apiKey" type="text">

Numeric Character ID:	<input name="characterID" type="text">

<input type="submit">

		</form>

Notifications for Character

		<form id="NotificationsForChar" method="post" action="http://api.eve-online.com/char/Notifications.xml.aspx">

UserID:	<input name="userID" type="text">

ApiKey:	<input name="apiKey" type="text">

Numeric Character ID:	<input name="characterID" type="text">

<input type="submit">

		</form>

Mail Messages for Character

		<form id="MailMessagesForChar" method="post" action="http://api.eve-online.com/char/MailMessages.xml.aspx ">

UserID:	<input name="userID" type="text">

ApiKey:	<input name="apiKey" type="text">

Numeric Character ID:	<input name="characterID" type="text">

<input type="submit">

		</form>

<!DOCTYPE html>

        <meta charset="utf-8" />

Clouds


[autoplay] {
  border: 0.4rem solid;
  border-color: var(--checka11y-border-warning);
  background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="350px" height="80px" viewBox="0 0 350 80"><rect class="box" x="4" y="4" width="342" height="72" rx="12" ry="12" fill="rgba(255, 255, 216, 0.999999)" stroke-width="0.4rem" stroke="rgba(255, 255, 102, 0.999999)" /><g fill="rgba(133, 100, 4, 0.999999)" font-size="1rem" font-weight="700" font-family="verdana, geneva, tahoma, sans-serif" font-style="initial" letter-spacing="initial" text-decoration="none" text-transform="initial" text-shadow="none"><text x="15" y="35">WARNING (W0001): Media should</text> <text x="15" y="60">not autoplay.</text></g></svg>');
  background-position: bottom center;
  background-repeat: no-repeat;
  min-width: 350px;
  padding-bottom: 80px;
}

[onclick]:not(a, button, [onkeydown], [onkeyup], [onkeypress])::after, [onclick][onkeyup]:not([tabindex], a, button)::after, [onclick][onkeyup][tabindex="-1"]:not(a, button)::after, [onclick][onkeydown]:not([tabindex], a, button)::after, [onclick][onkeydown][tabindex="-1"]:not(a, button)::after, [onclick][onkeypress]:not([tabindex], a, button)::after, [onclick][onkeypress][tabindex="-1"]:not(a, button)::after, [ondblclick]:not(a, button, [onkeydown], [onkeyup], [onkeypress])::after, [ondblclick][onkeyup]:not([tabindex], a, button)::after, [ondblclick][onkeyup][tabindex="-1"]:not(a, button)::after, [ondblclick][onkeydown]:not([tabindex], a, button)::after, [ondblclick][onkeydown][tabindex="-1"]:not(a, button)::after, [ondblclick][onkeypress]:not([tabindex], a, button)::after, [ondblclick][onkeypress][tabindex="-1"]:not(a, button)::after, [onmousedown]:not(a, button, [onkeydown], [onkeyup], [onkeypress])::after, [onmousedown][onkeyup]:not([tabindex], a, button)::after, [onmousedown][onkeyup][tabindex="-1"]:not(a, button)::after, [onmousedown][onkeydown]:not([tabindex], a, button)::after, [onmousedown][onkeydown][tabindex="-1"]:not(a, button)::after, [onmousedown][onkeypress]:not([tabindex], a, button)::after, [onmousedown][onkeypress][tabindex="-1"]:not(a, button)::after, [onmouseup]:not(a, button, [onkeydown], [onkeyup], [onkeypress])::after, [onmouseup][onkeyup]:not([tabindex], a, button)::after, [onmouseup][onkeyup][tabindex="-1"]:not(a, button)::after, [onmouseup][onkeydown]:not([tabindex], a, button)::after, [onmouseup][onkeydown][tabindex="-1"]:not(a, button)::after, [onmouseup][onkeypress]:not([tabindex], a, button)::after, [onmouseup][onkeypress][tabindex="-1"]:not(a, button)::after, [onmouseover]:not(a, button)::after, [onmouseenter]:not(a, button)::after, [onmouseleave]:not(a,


frsp f1, f1
/* 80216DC8 00212A28  FC 01 00 40 */	fcmpo cr0, f1, f0
/* 80216DCC 00212A2C  40 81 00 EC */	ble lbl_80216EB8
lbl_80216DD0:
/* 80216DD0 00212A30  7F E3 FB 78 */	mr r3, r31
/* 80216DD4 00212A34  7F E4 FB 78 */	mr r4, r31
/* 80216DD8 00212A38  48 06 5F 51 */	bl PSVECNormalize
/* 80216DDC 00212A3C  7F C3 F3 78 */	mr r3, r30
/* 80216DE0 00212A40  7F E4 FB 78 */	mr r4, r31
/* 80216DE4 00212A44  38 A1 00 08 */	addi r5, r1, 8
/* 80216DE8 00212A48  48 06 60 01 */	bl PSVECCrossProduct
/* 80216DEC 00212A4C  C0 21 00 08 */	lfs f1, 8(r1)
/* 80216DF0 00212A50  C0 02 9A E8 */	lfs f0, lbl_806420E8-_SDA2_BASE_(r2)
/* 80216DF4 00212A54  FC 20 0A 10 */	fabs f1, f1
/* 80216DF8 00212A58  FC 20 08 18 */	frsp f1, f1
/* 80216DFC 00212A5C  FC 01 00 40 */	fcmpo cr0, f1, f0
/* 80216E00 00212A60  41 81 00 2C */	bgt lbl_80216E2C
/* 80216E04 00212A64  C0 21 00 0C */	lfs f1, 0xc(r1)
/* 80216E08 00212A68  FC 20 0A 10 */	fabs f1, f1
/* 80216E0C 00212A6C  FC 20 08 18 */	frsp f1, f1
/* 80216E10 00212A70  FC 01 00 40 */	fcmpo cr0, f1, f0
/* 80216E14 00212A74  41 81 00 18 */	bgt lbl_80216E2C
/* 80216E18 00212A78  C0 21 00 10 */	lfs f1, 0x10(r1)
/* 80216E1C 00212A7C  FC 20 0A 10 */	fabs f1, f1
/* 80216E20 00212A80  FC 20 08 18 */	frsp f1, f1
/* 80216E24 00212A84  FC 01 00 40 */	fcmpo cr0, f1, f0
/* 80216E28 00212A88  40 81 00 90 */	ble lbl_80216EB8
lbl_80216E2C:
/* 80216E2C 00212A8C  38 61 00 08 */	addi r3, r1, 8
/* 80216E30 00212A90  7C 64 1B 78 */	mr r4, r3
/* 80216E34 00212A94  48 06 5E F5 */	bl PSVECNormalize
/* 80216E38 00212A98  7F C3 F3 78 */	mr r3, r30
/* 80216E3C 00212A9C  7F E4 FB 78 */	mr r4, r31
/* 80216E40 00212AA0  48 06 5F 89 */	bl PSVECDotProduct
/* 80216E44 00212AA4  C0 42 9B 3C */	lfs f2, lbl_8064213C-_SDA2_BASE_(r2)
/* 80216E48 00212AA8  FC 01 10 40 */	fcmpo cr0, f1, f2
/* 80216E4C 00212AAC  4C 41 13 82 */	cror 2, 1,


height:150%;
font-size:11.0000pt;mso-font-kerning:0.0000pt;" ><o:p></o:p>

Ϊǽ־Ը֯Ϊ“ӶVathak's Marauders”ֻʮӵɡ쵼ײԵǲɵСǱ޵ҹشɸְɱƻŶӵ䣬ʧʦֱڱ<o:p></o:p>

<o:p> </o:p>

ħ֮飨Diabolical Motivation Quick Reference<font f


tekst = "to jest nasz tekst"
lista = []
for znak in tekst:
    if not znak in lista and znak != ' ':
        lista.append(znak)
print(lista)

posortowanaLista = sorted(lista)
print(posortowanaLista)

listaIlosciWystapien = []
for znak in posortowanaLista:
    ile = 0
    for litera in tekst:
        if litera == znak:
            ile += 1
        else:
            pass
    listaIlosciWystapien.append(ile)
print(listaIlosciWystapien)

for i in range(0, len(posortowanaLista)):
    print(posortowanaLista[i], listaIlosciWystapien[i])


expressed or implied.
 * In case of changes by gematik GmbH find details in the "Readme" file.
 *
 * See the Licence for the specific language governing permissions and limitations under the Licence.
 *
 * *******
 *
 * For additional notes and disclaimer from gematik and in case of changes by gematik find details in the "Readme" file.
 */

package de.gematik.ti.erp.app.nfc

import de.gematik.ti.erp.app.card.model.exchange.PaceInfo
import org.bouncycastle.util.encoders.Hex
import org.junit.Assert
import kotlin.test.Test

class PaceInfoTest {

    @Test
    fun testPaceInfoExtraction() {
        val cardAccessBytes: ByteArray = Hex.decode("31143012060A04007F0007020204020202010202010D")
        val expectedProtocolId = "0.4.0.127.0.7.2.2.4.2.2"
        val expectedPaceInfoProtocolBytes: ByteArray = Hex.decode("04007F00070202040202")
        val paceInfo = PaceInfo(cardAccessBytes)
        val protocolId = paceInfo.protocolID
        Assert.assertEquals(expectedProtocolId, protocolId)
        val paceInfoProtocolBytes = paceInfo.paceInfoProtocolBytes
        Assert.assertArrayEquals(
            expectedPaceInfoProtocolBytes,
            paceInfoProtocolBytes
        )
    }
}
/*
 * Copyright (Change Date see Readme), gematik GmbH
 *
 * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by the
 * European Commission – subsequent versions of the EUPL (the "Licence").
 * You may not use this work except in compliance with the Licence.
 *
 * You find a copy of the Licence in the "Licence" file or at
 * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the Licence is distributed on an "AS IS" basis,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either expressed or implied.
 * In case of changes by gematik GmbH find details in the "Readme" file.
 *
 * See the Licence for the specific language governing permissions and limitations under the Licence.
 *
 * *******
 *
 * For additional notes and disclaimer from gematik and in case of changes by gematik find details in the "Readme" file.
 */

package de.gematik.ti.erp.app.vau

import org.junit.Assert.assertEquals
import kotlin.test.Test

class UtilsTest {
    @Test
    fun `find sub byte array within byte array`() {
        assertEquals(true, byteArrayOf(2, 3, 1, 5, 6, 9, 0).contains(byteArrayOf(2, 3)))
        assertEquals(true, byteArrayOf(2, 3, 1, 5, 6, 9, 0).contains(byteArrayOf(3)))

        assertEquals(false, byteArrayOf(2, 3, 1, 5, 6, 9, 0).contains(byteArrayOf()))
        assertEquals(false, byteArrayOf(2, 3, 1, 5, 6, 9, 0).contains(byteArrayOf(4, 6)))

        assertEquals(
            true,
            byteArrayOf(2, 3, 1, 5, 6, 9, 0).contains(byteArrayOf(2, 3, 1, 5, 6, 9, 0))
        )
        assertEquals(
            false,
            byteArrayOf(2, 3, 1, 5, 6, 9, 0).contains(byteArrayOf(0, 3, 1, 5, 6, 9, 0))
        )

        assertEquals(
            false,
            byteArrayOf(2, 3, 1, 5, 6, 9, 0).contains(byteArrayOf(1, 3, 4, 0, 3, 1, 5, 6, 9, 0))
        )

        assertEquals(false, byteArrayOf().contains(byteArrayOf(6, 9, 0)))
    }
}
/*
 * Copyright (Change Date see Readme), gematik GmbH
 *
 * Licensed under the EUPL, Version 1.2 or - as soon they will be approved by the
 * European Commission – subsequent versions of the EUPL (the "Licence").
 * You may not use this work except in compliance with the Licence.


     x = one.minus(cosh2_x.times(d8.minus(cosh2_x.times(d8))));
        }
        return finalise(x, Ctor.precision = pr, Ctor.rounding = rm, true);
      };
      P.hyperbolicSine = P.sinh = function() {
        var k, pr, rm, len, x = this, Ctor = x.constructor;
        if (!x.isFinite() || x.isZero()) return new Ctor(x);
        pr = Ctor.precision;
        rm = Ctor.rounding;
        Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;
        Ctor.rounding = 1;
        len = x.d.length;
        if (len < 3) {
          x = taylorSeries(Ctor, 2, x, x, true);
        } else {
          k = 1.4 * Math.sqrt(len);
          k = k > 16 ? 16 : k | 0;
          x = x.times(1 / tinyPow(5, k));
          x = taylorSeries(Ctor, 2, x, x, true);
          var sinh2_x, d5 = new Ctor(5), d16 = new Ctor(16), d20 = new Ctor(20);
          for (; k--; ) {
            sinh2_x = x.times(x);
            x = x.times(d5.plus(sinh2_x.times(d16.times(sinh2_x).plus(d20))));
          }
        }
        Ctor.precision = pr;
        Ctor.rounding = rm;
        return finalise(x, pr, rm, true);
      };
      P.hyperbolicTangent = P.tanh = function() {
        var pr, rm, x = this, Ctor = x.constructor;
        if (!x.isFinite()) return new Ctor(x.s);
        if (x.isZero()) return new Ctor(x);
        pr = Ctor.precision;
        rm = Ctor.rounding;
        Ctor.precision = pr + 7;
        Ctor.rounding = 1;
        return divide(x.sinh(), x.cosh(), Ctor.precision = pr, Ctor.rounding = rm);
      };
      P.inverseCosine = P.acos = function() {
        var halfPi, x = this, Ctor = x.constructor, k = x.abs().cmp(1), pr = Ctor.precision, rm = Ctor.rounding;
        if (k !== -1) {
          return k === 0 ? x.isNeg() ? getPi(Ctor, pr, rm) : new Ctor(0) : new Ctor(NaN);
        }
        if (x.isZero()) return getPi(Ctor, pr + 4, rm).times(0.5);
        Ctor.precision = pr + 6;
        Ctor.rounding = 1;
        x = x.asin();
        halfPi = getPi(Ctor, pr + 4, rm).times(0.5);
        Ctor.precision = pr;
        Ctor.rounding = rm;
        return halfPi.minus(x);
      };
      P.inverseHyperbolicCosine = P.acosh = function() {
        var pr, rm, x = this, Ctor = x.constructor;
        if (x.lte(1)) return new Ctor(x.eq(1) ? 0 : NaN);
        if (!x.isFinite()) return new Ctor(x);
        pr = Ctor.precision;
        rm = Ctor.rounding;
        Ctor.precision = pr + Math.max(Math.abs(x.e), x.sd()) + 4;
        Ctor.rounding = 1;
        external = false;
        x = x.times(x).minus(1).sqrt().plus(x);
        external = true;
        Ctor.precision = pr;
        Ctor.rounding = rm;
        return x.ln();
      };
      P.inverseHyperbolicSine = P.asinh = function() {
        var pr, rm, x = this, Ctor = x.


       nop                         /* Reserved Vector (holds Philips ISP checksum) */
                /* see page 71 of "Insiders Guide to the Philips ARM7-Based Microcontrollers" by Trevor Martin  */
/*                ldr     PC, [PC,#-0x0120]     /* Interrupt Request Interrupt (load from VIC) */
                ldr     PC, irq_addr        /* Interrupt Request Interrupt (load from VIC) */
                ldr     r0, =__fiq_handler  /* Fast Interrupt Request Interrupt */
                ldr     pc, [r0]            /* jump to handler in pointer at __fiq_handler */

/* Exception vector handlers branching table */
reset_addr:     .word   reset_handler       /* defined in this module below  */
undef_addr:     .word   isr_undef           /* defined in arm7_common/vectors.c */
swi_addr:       .word   ctx_switch          /* defined in arm7_common/common.s */
pabt_addr:      .word   isr_pabt            /* defined in arm7_common/vectors.c */
dabt_addr:      .word   isr_dabt            /* defined in arm7_common/vectors.c */
irq_addr:       .word   arm_irq_handler     /* defined in arm7_common/common.s */

/* Begin of boot code */
.text
.arm
.section .init

.global _startup
.func   _startup

_startup:
                ldr    pc, =reset_handler

/*.func reset_handler */
reset_handler:

.section .init0
                /* Setup a stack for each mode - note that this only sets up a usable stack
                for User mode.   Also each mode is setup with interrupts initially disabled. */
                ldr   r0, = __stack_end
                msr   CPSR_c, #MODE_UND|I_BIT|F_BIT     /* Undefined Instruction Mode  */
                ldr   sp, =__stack_und_start
                msr   CPSR_c, #MODE_ABT|I_BIT|F_BIT     /* Abort Mode */
                ldr   sp, =__stack_abt_start
                msr   CPSR_c, #MODE_FIQ|I_BIT|F_BIT     /* FIQ Mode */
                ldr   sp, =__stack_fiq_start
                msr   CPSR_c, #MODE_IRQ|I_BIT|F_BIT     /* IRQ Mode */
                ldr   sp, =__stack_irq_start
                msr   CPSR_c, #MODE_SVC|I_BIT|F_BIT     /* Supervisor Mode */
                ldr   sp, =__stack_svc_start
                msr   CPSR_c, #MODE_SYS|I_BIT|F_BIT     /* User Mode */
                ldr   sp, =__stack_usr_start

                bl  bootloader
                b   kernel_init

                /* Infinite Loop */
.section .fini0
__main_exit:    B   __main_exit

.endfunc
.end


_by_key(|(_, d)| *d);
        if remaining.is_empty() || remaining[0].1 == std::usize::MAX {
            return std::usize::MAX;
        }

        let next_label = remaining[0].0.clone();
        dijkstras(connections, distances, unvisited, &next_label)
    }

    let first_node = "AA".to_owned();
    let mut distances = connections
        .keys()
        .map(|k| {
            (
                k.clone(),
                if *k == first_node { 0 } else { std::usize::MAX },
            )
        })
        .collect();
    let mut unvisited = connections.keys().cloned().collect();
    dijkstras(&connections, &mut distances, &mut unvisited, &first_node)
}

fn main() -> Result<(), Box<dyn Error>> {
    let file = File::open("input.txt")?;
    let reader = BufReader::new(file);
    let map = reader
        .lines()
        .map(|line| line.map(|l| l.bytes().collect::<Vec<u8>>()))
        .collect::<Result<Vec<Vec<_>>, _>>()?;
    let labels = find_labels(&map)?;
    let connections = find_connections(&map, &labels);
    let result = find_shortest_path(&connections);
    println!("Shortest distance: {}", result);

    Ok(())
}
use super::Optimizer;
use crate::compress::optimize::is_pure_undefined_or_null;
use std::f64;
use std::num::FpCategory;
use swc_atoms::js_word;
use swc_common::Spanned;
use swc_common::SyntaxContext;
use swc_common::DUMMY_SP;
use swc_ecma_ast::*;
use swc_ecma_transforms_base::ext::MapWithMut;
use swc_ecma_utils::ident::IdentLike;
use swc_ecma_utils::undefined;
use swc_ecma_utils::ExprExt;
use swc_ecma_utils::Value::Known;

/// Methods related to the option `evaludate`.
impl Optimizer<'_> {
    /// Evaludate expression if possible.
    ///
    /// This method call apppropriate methods for each ast types.
    pub(super) fn evaluate(&mut self, e: &mut Expr) {
        self.eval_global_vars(e);

        self.eval_numbers(e);
        self.eval_number_method_call(e);

        self.eval_known_static_method_call(e);
        self.eval_str_method_call(e);

        self.eval_array_method_call(e);
        self.eval_fn_method_call(e);

        self.eval_opt_chain(e);
    }

    fn eval_global_vars(&mut self, e: &mut Expr) {
        if self.options.ie8 {
            return;
        }

        if self.ctx.is_delete_arg || self.ctx.is_update_arg || self.ctx.is_lhs_of_assign {
            return;
        }

        // We should not convert used-defined `undefined` to `void 0`.
        match e {
            Expr::Ident(i) => {
                if self
                    .data
                    .as_ref()
                    .and_then(|data| data.vars.get(&i.to_id()))
                    .map(|var| var.declared)
                    .unwrap_or(false)
                {
                    return;
                }
            }
            _ => {}
        }

        match e {
            Expr::Ident(Ident {
                span,
                sym: js_word!("undefined"),
                ..
            }) => {
                log::trace!("evaluate: `undefined` -> `void 0`");
                self.changed = true;
                *e = *undefined(*span);
                return;
            }

            Expr::Ident(Ident {
                span,
                sym: js_word!("Infinity"),
                ..
            }) => {
                log::trace!("evaluate: `Infinity` -> `1 / 0`");
                self.changed = true;
                *e = Expr::Bin(BinExpr {
                    span: span.with_ctxt(self.done


nheal=true },
    ["Krankheit heilen"] = { short="Disease"; iname=HA_SPELL_CURE_DISEASE; nonheal=true },
    ["Magiebannung"] = { short="Dispel"; iname=HA_SPELL_DISPEL_MAGIC; nonheal=true },
    -- Paladin
    ["Heiliger Schock"] = { short="Shock"; iname=HA_SPELL_HOLY_SHOCK },
    ["G\195\182ttliches Eingreifen"] = { short="Intervention"; iname=HA_SPELL_DIVINE_INTERVENTION; cooldown=true; nonheal=true },
    ["Gottesschild"] = { short="Div. shield"; iname=HA_SPELL_DIVINE_SHIELD; cooldown=true; nonheal=true },
    ["L\195\164utern"] = { short="Purify"; iname=HA_SPELL_PURIFY; nonheal=true },
    ["Reinigung des Glaubens"] = { short="Cleanse"; iname=HA_SPELL_CLEANSE; nonheal=true },
    ["Handauflegung"] = { short="Legung"; iname=HA_SPELL_LAY_ON_HANDS },
    ["Segen des Schutzes"] = { short="Protection"; iname=HA_SPELL_BLESSING_OF_PROTECTION; cooldown=true; nonheal=true },
    -- Shaman
    ["Totem der Manaflut"] = { short="Mana Tide"; iname=HA_SPELL_MANA_TIDE; cooldown=true; nonheal=true },
    ["Reinigen"] = { short="Purge"; iname=HA_SPELL_PURGE; nonheal=true },
  };

  HA_HotSpells = {
    -- Druid
    ["Verj\195\188ngung"] = HA_SPELL_REJUVENATION,
    ["Nachwachsen"] = HA_SPELL_REGROWTH_HOT,
    -- Priest
    ["Erneuerung"] = HA_SPELL_RENEW,
  };

  HA_PassiveSpells = {
    -- Shaman
    ["Reinkarnation"] = { short="Reinkarnation"; iname=HA_SPELL_REINCARNATION; cooldown=true; nonheal=true},
  };

  HA_ZONE_FELWOOD = "Teufelswald";
  HA_ZONE_RUINS_AHNQIRAJ = "Ruinen von Ahn'Qiraj";
  HA_ZONE_TEMPLE_AHNQIRAJ = "Ahn'Qiraj";
  HA_ZONE_MOLTEN_CORE = "Geschmolzener Kern";
  HA_ZONE_BLACKWING_LAIR = "Pechschwingenhort";
  HA_ZONE_NAXXRAMAS = "Naxxramas";

  HA_DEBUF_NAME_NEFARIUS = "Schleier des Schattens";

  HA_PARSE_SPELL_FAILED_REASON = "Ihr scheitert beim Wirken von (.+): (.+)%."

  function HA_FixLogStrings(str)
    return str;
  end

else
  -- Default English values
  HA_CHAT_MISC_LOADED = "Loaded ! (/ha for help)";
  HA_CHAT_HELP_CHANNEL = "Specifies the channel to use. Specify nothing to stop using a channel (disables the addon).";
  HA_CHAT_HELP_SHOW = "Shows the main window.";
  HA_CHAT_HELP_LOCK = "Locks or not the main window.";
  HA_CHAT_HELP_AUTO = "Automatically display the main window when you are in a group ou raid. Hide it when not grouped.";
  HA_CHAT_HELP_DEBUG = "Shows or not, the debug window.";
  HA_CHAT_HELP_VERSIONS = "Prints version of all HA users in


x_alpha(da, sa);
#undef OP

        coverage.store(&dest[i], qRgba(r, g, b, a));
    }
}

void QT_FASTCALL comp_func_solid_Difference(uint *dest, int length, uint color, uint const_alpha)
{
    if (const_alpha == 255)
        comp_func_solid_Difference_impl(dest, length, color, QFullCoverage());
    else
        comp_func_solid_Difference_impl(dest, length, color, QPartialCoverage(const_alpha));
}

#if QT_CONFIG(raster_64bit)
static inline uint difference_op_rgb64(qint64 dst, qint64 src, qint64 da, qint64 sa)
{
    return src + dst - qt_div_65535(2 * qMin(src * da, dst * sa));
}

template <typename T>
static inline void comp_func_solid_Difference_impl(QRgba64 *dest, int length, QRgba64 color, const T &coverage)
{
    uint sa = color.alpha();
    uint sr = color.red();
    uint sg = color.green();
    uint sb = color.blue();

    for (int i = 0; i < length; ++i) {
        QRgba64 d = dest[i];
        uint da = d.alpha();

#define OP(a, b) difference_op_rgb64(a, b, da, sa)
        uint r =  OP(  d.red(), sr);
        uint b =  OP( d.blue(), sb);
        uint g =  OP(d.green(), sg);
        uint a = mix_alpha_rgb64(da, sa);
#undef OP

        coverage.store(&dest[i], qRgba64(r, g, b, a));
    }
}

void QT_FASTCALL comp_func_solid_Difference_rgb64(QRgba64 *dest, int length, QRgba64 color, uint const_alpha)
{
    if (const_alpha == 255)
        comp_func_solid_Difference_impl(dest, length, color, QFullCoverage());
    else
        comp_func_solid_Difference_impl(dest, length, color, QPartialCoverage(const_alpha));
}
#endif

#if QT_CONFIG(raster_fp)
static inline float difference_op_rgbafp(float dst, float src, float da, float sa)
{
    return src + dst - (2 * qMin(src * da, dst * sa));
}

template <typename T>
static inline void comp_func_solid_Difference_impl(QRgbaFloat32 *dest, int length, QRgbaFloat32 color, const T &coverage)
{
    float sa = color.alpha();
    float sr = color.red();
    float sg = color.green();
    float sb = color.blue();

    for (int i = 0; i < length; ++i) {
        QRgbaFloat32 d = dest[i];
        float da = d.alpha();

#define OP(a, b) difference_op_rgbafp(a, b, da, sa)
        float r =  OP(  d.red(), sr);
        float b =  OP( d.blue(), sb);
        float g =  OP(d.green(), sg);
        float a = mix_alpha_rgbafp(da, sa);
#undef OP

        coverage.store(&dest[i], qRgbaFloat32(r, g, b, a));
    }
}

void QT_FASTCALL comp_func_solid_Difference_rgbafp(QRgbaFloat32 *dest, int length, QRgbaFloat32 color, uint const_alpha)
{
    if (const_alpha == 255)
        comp_func_solid_Difference_impl(dest, length, color, QFullCoverage());
    else
        comp_func_solid_Difference_impl(dest, length, color


List)

      // Find current session
      if (sessionId) {
        const current = sessionList.find(s => s.id === sessionId)
        setCurrentSession(current || null)
      }
    } catch (error) {
      console.error('Failed to load sessions:', error)
    } finally {
      setIsLoading(false)
    }
  }, [client, projectPath, sessionId, worktreeId])

  // Create new session
  const handleCreateSession = useCallback(async (title?: string) => {
    if (!client || !projectPath) return null

    try {
      const response = await client.session.create({
        body: {
          title: title || `New Session ${Date.now()}`,
          directory: projectPath,
          worktree: worktreeId
        }
      })

      const newSession = response.data
      if (newSession) {
        setSessions(prev => [newSession, ...prev])
        await onSessionChange()
        return newSession
      }
    } catch (error) {
      console.error('Failed to create session:', error)
    }
    return null
  }, [client, projectPath, worktreeId, onSessionChange])

  return {
    sessions,
    currentSession,
    isLoading,
    loadSessions,
    handleCreateSession,
    handleRenameSession,
    handleDeleteSession
  }
}
```

## 4. Project Dashboard Implementation Details

### 4.1 Dashboard State Management Architecture

```mermaid
graph TD
    A[ProjectDashboard] --> B[useCurrentProject]
    A --> C[useWorktreesStore]
    A --> D[useSessionsStore]
    A --> E[useProjectsActions]

    B --> F[Projects Zustand Store]
    C --> G[Worktrees Zustand Store]
    D --> H[Sessions Zustand Store]
    E --> I[Project Manager Client]

    F --> J[Persistent Storage]
    G --> K[API Cache]
    H --> L[Session Cache]
    I --> M[HTTP API]

    subgraph "Hook Layer"
        B
        C
        D
        E
    end

    subgraph "Store Layer"
        F
        G
        H
        I
    end

    subgraph "Persistence Layer"
        J
        K
        L
        M
    end
```

### 4.2 Dashboard Data Flow

```typescript
// Dashboard component with comprehensive state management
export default function ProjectDashboard() {
  const { projectId, worktreeId } = useParams()
  const navigate = useNavigate()

  // Core state hooks
  const currentProject = useCurrentProject()
  const { loadWorktrees, createWorktree, removeWorktree } = useWorktreesStore()
  const { loadSessions, createSession } = useSessionsStore()
  const { selectProject } = useProjectsActions()

  // Derived state
  const worktrees = useWorktreesForProject(projectId || '')
  const sessions = useSessionsForProject(projectId || '', activeWorktreePath)
  const recentSessions = useRecentSessions(projectId || '', 5, activeWorktreePath)

  // Local state for dashboard-specific data
  const [gitStatus, setGitStatus] = useState<GitSummary | null>(null)
  const [agentSummary, setAgentSummary] = useState<AgentSummary | null>(null)
  const [activityFeed, setActivityFeed] = useState<ActivityEvent[]>([])

  // Active worktree resolution
  const activeWorktree = useMemo(() => {
    if (!projectId) return undefined

    if (resolvedWorktreeId === 'default') {
      return {
        id: 'default',
        path: currentProject?.path,
        title: `${currentProject?.name ?? 'Project'} (default)`
      }
    }

    return worktrees.find(worktree => worktree.id === resolvedWorktreeId)
  }, [projectId, resolvedWorktreeId, currentProject, worktrees])

  // Data loading effects
  useEffect(() => {
    if (!projectId)


  font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif;
  overflow-y: auto;
}

.oneline {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  width: 100%;
}

.btn-focus {
  border-color: transparent;
  border-radius: 3px;
  border-style: solid;
  border-width: 1px;
}

.btn-focus:focus {
  border-color: #66afe9;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 5px rgba(102, 175, 233, 0.6);
  outline: none;
}

.fade-show {
  opacity: 1;
}

.fade-show.ng-hide-add.ng-hide-add-active,
.fade-show.ng-hide-remove.ng-hide-remove-active {
  transition: opacity linear 0.2s;
}

.fade-show.ng-hide {
  opacity: 0;
}

h1.wizard-title {
  font-family: inherit;
  font-weight: 300;
  text-color: #777;
}

.selectable {
  -webkit-user-select: initial;
  cursor: text;
  user-select: initial;
}

.clickable {
  cursor: pointer;
}

.just-hide {
  visibility: hidden;
}

.e2email-header {
  background-color: #eee;
  padding-bottom: 15px;
  padding-top: 15px;
}

.e2email-content-start {
  margin-top: 80px;
}

.top-row-buffer {
  margin-top: 1.4em;
}

.btn-blank {
  background-color: transparent;
  color: #808080;
}

.btn-blank:hover {
  color: #428bca;
}

div.big-icon {
  margin: auto;
  margin-top: 25px;
  margin-bottom: 20px;
}

div.big-icon > img {
  display: block;
  margin: auto;
}

.attach-img {
  height: 23px;
  margin-top: 10px;
  cursor: pointer;
}

.attach-icon {
  margin-top: 13px;
}

.attach-icon:hover {
  fill: #66afe9;
}

.sidebtn {
  width: 70px;
  height: 30px;
  font-size: 12px;
}

.single-attachment {
  background-color: #f5f5f5;
  border: 1px solid #dcdcdc;
  font-weight: bold;
  font-size: 13px;
  margin: 0 7px 6px;
  color: #1155CC !important;
  text-align: left;
  padding: 2px 6px;
  max-width: 448px;
  width: 80%;
  height: 23px;
  display: flex;
}

#textareaSpace {
  min-height: 250px;
  max-height: 500px;
  overflow: auto;
  background-color: white;
}

#textareaElement {
  flex;flex-direction: column;
  min-height: 250px;
  text-align: left;
  border: none;
  background-color: white;
  outline: none;
  resize: none;
  margin-bottom: 0px;
}

#attachmentRepeat {
  background-color: white;
  min-height: 20px;
  padding-top: 10px;
  display: flex;
  flex-direction: column;
}

.removeAttachment {
  border: none;
  font-size: 13px;
  color: gray;
  background-color: inherit;
  margin: 0 !important;
  padding: 0;
  float: right;
}
/**
 * Customize default theme styling by overriding CSS variables:
 * https://github.com/vuejs/vitepress/blob/main/src/client/theme-default/styles/vars.css
 */

/**
 * Colors
 *
 * Each colors have exact sa


).MessageSend), ctx, conversationID, text, medias)
}

// Update mocks base method.
func (m *MockConversationHandler) Update(ctx context.Context, id uuid.UUID, fields map[conversation.Field]any) (*conversation.Conversation, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "Update", ctx, id, fields)
	ret0, _ := ret[0].(*conversation.Conversation)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// Update indicates an expected call of Update.
func (mr *MockConversationHandlerMockRecorder) Update(ctx, id, fields any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockConversationHandler)(nil).Update), ctx, id, fields)
}
// Code generated by MockGen. DO NOT EDIT.
// Source: main.go
//
// Generated by this command:
//
//	mockgen -package messagehandler -destination ./mock_messagehandler.go -source main.go -build_flags=-mod=mod
//

// Package messagehandler is a generated GoMock package.
package messagehandler

import (
	context "context"
	conversation "monorepo/bin-conversation-manager/models/conversation"
	media "monorepo/bin-conversation-manager/models/media"
	message "monorepo/bin-conversation-manager/models/message"
	reflect "reflect"

	uuid "github.com/gofrs/uuid"
	gomock "go.uber.org/mock/gomock"
)

// MockMessageHandler is a mock of MessageHandler interface.
type MockMessageHandler struct {
	ctrl     *gomock.Controller
	recorder *MockMessageHandlerMockRecorder
	isgomock struct{}
}

// MockMessageHandlerMockRecorder is the mock recorder for MockMessageHandler.
type MockMessageHandlerMockRecorder struct {
	mock *MockMessageHandler
}

// NewMockMessageHandler creates a new mock instance.
func NewMockMessageHandler(ctrl *gomock.Controller) *MockMessageHandler {
	mock := &MockMessageHandler{ctrl: ctrl}
	mock.recorder = &MockMessageHandlerMockRecorder{mock}
	return mock
}

// EXPECT returns an object that allows the caller to indicate expected use.
func (m *MockMessageHandler) EXPECT() *MockMessageHandlerMockRecorder {
	return m.recorder
}

// Create mocks base method.
func (m *MockMessageHandler) Create(ctx context.Context, id, customerID, conversationID uuid.UUID, direction message.Direction, status message.Status, referenceType message.ReferenceType, referenceID uuid.UUID, transactionID, text string, medias []media.Media) (*message.Message, error) {
	m.ctrl.T.Helper()
	ret := m.ctrl.Call(m, "Create", ctx, id, customerID, conversationID, direction, status, referenceType, referenceID, transactionID, text, medias)
	ret0, _ := ret[0].(*message.Message)
	ret1, _ := ret[1].(error)
	return ret0, ret1
}

// Create indicates an expected call of Create.
func (mr *MockMessageHandlerMockRecorder) Create(ctx, id, customerID, conversationID, direction, status, referenceType, referenceID, transactionID, text, medias any) *gomock.Call {
	mr.mock.ctrl.T.Helper()
	return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Create", reflect.TypeOf((*MockMessageHandler)(nil).Create), ctx, id, customerID, conversationID, direction, st


using System.ComponentModel;
using osu.Framework.Configuration;
using osu.Framework.Platform;
using osu.Game.Rulesets.Hikariii.Features.Player.Plugins.Config;

namespace osu.Game.Rulesets.Hikariii.Features.Player.Plugins.Bundle.Yasp.Config
{
    public class YaspConfigManager : PluginConfigManager<YaspSettings>
    {
        public YaspConfigManager(Storage storage)
            : base(storage)
        {
        }

        /// <summary>
        /// 在这里初始化默认值, 更多用法请见 <see cref="ConfigManager"/>
        /// </summary>
        protected override void InitialiseDefaults()
        {
            SetDefault(YaspSettings.Scale, 1, 0, 5f


-worlds-working-age-population-it-urgently-needs-provide" src="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" width="72" border="0">

India's demographic challenge

The Economist -
May 2013

India will soon have a fifth of the world's working-age population. ... ONE of India's bigger private-sector employers can be found in Patna, the capital of Bihar, a poor, populous state in ...

      Explore:
      indias

The Last Taboo

Mother Jones
There are 7 billion humans on earth, so why can't we talk about population? .... India's population is projected to surpass China's by 2030 in a country only a third China's size—adding 400 million ...</sp


uld only call in event [requirement][ConiumEvent.requirement].
     *
     * The event context be the base context to arise attached contexts with no argument provided.
     *
     * @param P1 Type of first parameter
     * @param arg1 The first parameter will input to attached contexts
     * @param P2 Type of second parameter
     * @param arg2 The second parameter will input to attached contexts
     * @param P3 Type of third parameter
     * @param arg3 The third parameter will input to attached contexts
     * @param P4 Type of fourth parameter
     * @param arg4 The fourth parameter will input to attached contexts
     * @param P5 Type of fifth parameter
     * @param arg5 The fifth parameter will input to attached contexts
     * @param P6 Type of sixth parameter
     * @param arg6 The sixth parameter will input to attached contexts
     * @param P7 Type of seventh parameter
     * @param arg7 The seventh parameter will input to attached contexts
     *
     * @see ConiumEvent
     * @see ConiumArisingEventContext
     * @see com.github.cao.awa.conium.parameter.dynamic.DynamicArgs
     * @see DynamicArgType
     * @see ParameterSelective
     * @see com.github.cao.awa.conium.parameter.dynamic.lifecycle.DynamicArgsLifecycle
     *
     * @return The context instance with [ONCE][com.github.cao.awa.conium.parameter.dynamic.lifecycle.DynamicArgsLifecycle.ONCE] lifecycle.
     *
     * @author cao_awa
     * @author 草二号机
     *
     * @since 1.0.0
     */
    @JvmStatic
    fun <P1, P2, P3, P4, P5, P6, P7> requiresAny(
        arg1: DynamicArgType<P1>,
        arg2: DynamicArgType<P2>,
        arg3: DynamicArgType<P3>,
        arg4: DynamicArgType<P4>,
        arg5: DynamicArgType<P5>,
        arg6: DynamicArgType<P6>,
        arg7: DynamicArgType<P7>
    ): ConiumArisingEventContext<Any, ParameterSelective8<Boolean, Any, P1, P2, P3, P4, P5, P6, P7>> =
        ConiumArisingEventContext(DynamicArgsBuilder.requires(arg1, arg2, arg3, arg4, arg5, arg6, arg7, true))

    private fun <I: Any, P : ParameterSelective, M : ConiumEventMetadata<I>> forever(
        eventType: ConiumEventType<I, M, *, *>,
        dynamicArgs: DynamicArgs<P, Boolean>
    ): ConiumArisingEventContext<I, P> {
        return ConiumArisingEventContext<I, P>(dynamicArgs).apply {
            // Attach this context to event.
            ConiumEvent.forever(eventType, this)
        }
    }

    /**
     * Make a sub context of the specified event type that only triggers presaging in the context with no arguments, then auto attach to forever lifecycle of the event type.
     *
     * The context will arise when event base context arising and invalidate when reload events.
     *
     * @param I The specified input identity instance, see the reified type of [ConiumEventType][ConiumEventType]
     * @param eventType The event type that will be attaching
     * @param presaging The presaging trigger, default is always successes
     *
     * @see ConiumEvent
     * @see ConiumArisingEventContext
     * @see DynamicArgs
     * @see DynamicArgType
     * @see ParameterSelective
     * @see com.github.cao.awa.conium.parameter.dynamic.lifecycle.DynamicArgsLifecycle
     *
     * @return The context instance with [FOREVER][com.github.cao.awa.conium.parameter.dynamic.lifecycle.DynamicArgsLifecycle.FOREVER] lifecycle.
     *
     * @author cao_awa
     *
     * @


z-index: 2;
    position: relative;
}
[data-tts-current-line="true"][data-tts-color="gray"] {
    background: rgba(85,85,85,0.5) !important;
    z-index: 2;
    position: relative;
}

.icon:hover .icon-tooltip {
    display: block;
}

.icon-tooltip {
    display: none;
    position: absolute;
    left: 50%;
    /*top: 50%;*/
    transform: translate(-50%, -105%);
    background: #DADADA;
    padding: 0.25rem 0.5rem;
    text-overflow: ellipsis;
    max-width: 22rem;
    min-width: 100px;
    z-index: 1000;
    border: 1px dotted #5b5852;
}

.icon-tooltip:before, .icon-tooltip:after {
    content: '';
    display: block;
}

.icon-tooltip:before {
    content: " ";
    display: block;
    position: absolute;
    top: 100%;
    left: 50%;
    width: 0;
    height: 0;
    border-left: 10px solid transparent;
    border-right: 10px solid transparent;
    border-top: 5px solid #5b5852;
    margin-left: -10px;
}

img {
    max-height: var(--USER__maxMediaHeight) !important;
}

#R2_ID_GUTTER_RIGHT_CONTAINER {
    position: absolute;
    top: 0;
    right: -20px;
}
/* Readium CSS
   Config module

   A file allowing implementers to customize flags for reading modes,
   user settings, etc.

   Repo: https://github.com/readium/readium-css */

/* Custom medias
   Syntax: @custom-media --variable (prop: value) */

/* Responsive columns
   The minimum width for which responsive columns (2 -> 1 and vice versa,
   depending on the current font-size) must be enabled */

/* Mobile columns
   The minimum and maximum width for mobile devices.
   We’re forcing the landscape orientation by default,
   and must still investigate large tablets (iPad Pro, Surface Pro 3, etc.). */

/* Custom selectors
   Syntax: @custom-selector :--variable selector
   The selectors you will use for flags/switches
   You can alternatively use classes or custom data-* attributes */

/* User view = paged | scrolled */

/* Font-family override */

/* Advanced settings */

/* Reading Modes */

/* Filters (images) */

/* Accessibility normalization */

/* Accessibility font. You can add selectors, using “, ” as a separator, if you have multiple fonts */

/* Direction i.e. ltr and rtl */

/* Readium CSS
   Pagination module

   A set of styles to paginate ePublications

   Repo: https://github.com/readium/readium-css */

/* Config */

/* Columns are responsive by default, even if column-width is set in pixels,
   which means two-page spread will switch to single page depending on current font-size.
   If you want more control, I’m afraid you’ll have to update colWidth/colGap dynamically,
   which is how a significant amount of RS do at the moment. */

/* Default for smartphone portrait (small screens) */

:root {
  /* Your columns’ width floor */
  --RS__colWidth: 45em; /* The width at which we’ll switch