Type.Null:
                break;
            case JsValueType.Int:
                writer.WriteInt((int)jsValue.Value);
                break;
            case JsValueType.Bool:
                writer.WriteBool((bool)jsValue.Value);
                break;
            case JsValueType.String:
                writer.WriteString((string)jsValue.Value);
                break;
            case JsValueType.UInt:
                writer.WriteUInt((uint)jsValue.Value);
                break;
            case JsValueType.Double:
                writer.WriteDouble((double)jsValue.Value);
                break;
            case JsValueType.Date:
                DateTime dateTime = (DateTime)jsValue.Value;
                writer.WriteLong(dateTime.Ticks);
                break;
            default:
                throw new ArgumentOutOfRangeException();
        }
    }

    private static JsValue ReadJsValue(BufferedReader reader)
    {
        JsValueType type = (JsValueType)reader.ReadByte();
        object value = null;

        //Depending on what type it is, we will read corresponding type
        switch (type)
        {
            case JsValueType.Null:
                break;
            case JsValueType.Object:
                int objectHolderSize = reader.ReadInt();

                JsObjectKeyValue[] values = new JsObjectKeyValue[objectHolderSize];
                for (int i = 0; i < objectHolderSize; i++)
                {
                    string keyName = reader.ReadString();
                    values[i] = new JsObjectKeyValue(keyName, ReadJsValue(reader));
                }

                value = new JsObjectHolder(values);
                break;
            case JsValueType.Int:
                value = reader.ReadInt();
                break;
            case JsValueType.Bool:
                value = reader.ReadBool();
                break;
            case JsValueType.String:
                value = reader.ReadString();
                break;
            case JsValueType.UInt:
                value = reader.ReadUInt();
                break;
            case JsValueType.Double:
                value = reader.ReadDouble();
                break;
            case JsValueType.Date:
                value = new DateTime(reader.ReadLong(), DateTimeKind.Utc);
                break;
            default:
                throw new ArgumentOutOfRangeException();
        }

        return new JsValue(type, value);
    }
}


 *LeakyBuf) Put(b []byte) {
	if len(b) != lb.bufSize {
		return
	}
	select {
	case lb.freeList <- b:
	default:
	}
	return
}
/*
Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserve.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

package fuse

import (
	"syscall"
	"time"

	"github.com/hanwen/go-fuse/v2/fuse"
	log "github.com/sirupsen/logrus"

	"github.com/PaddlePaddle/PaddleFlow/pkg/fs/client/meta"
	"github.com/PaddlePaddle/PaddleFlow/pkg/fs/client/utils"
	"github.com/PaddlePaddle/PaddleFlow/pkg/fs/client/vfs"
)

const fsName = "PaddleFlowFS"

type PFS struct {
	debug bool
	fuse.RawFileSystem
}

func NewPaddleFlowFileSystem(debug bool) *PFS {
	return &PFS{
		RawFileSystem: fuse.NewDefaultRawFileSystem(),
	}
}

func (fs *PFS) String() string {
	return fsName
}

// If called, provide debug output through the log package.
func (fs *PFS) SetDebug(debug bool) {
	log.Debugf("pfs POSIX pfs SetDebug: %t", debug)
	fs.debug = debug
}

// Lookup is called by the kernel when the VFS wants to know
// about a file inside a directory. Many lookup calls can
// occur in parallel, but only one call happens for each (dir,
// name) pair.
func (fs *PFS) Lookup(cancel <-chan struct{}, header *fuse.InHeader, name string, out *fuse.EntryOut) fuse.Status {
	log.Debugf("pfs POSIX pfs Lookup: input[%+v] name[%s]", *header, name)
	ctx := meta.NewContext(cancel, header.Uid, header.Pid, header.Gid)
	entry, code := vfs.GetVFS().Lookup(ctx, vfs.Ino(header.NodeId), name)
	if code != 0 {
		log.Infof("Lookup err code %v", code)
		return fuse.Status(code)
	}
	fs.replyEntry(entry, out)
	return fuse.OK
}

// Attributes.
func (fs *PFS) GetAttr(cancel <-chan struct{}, input *fuse.GetAttrIn, out *fuse.AttrOut) fuse.Status {
	log.Debugf("pfs POSIX pfs GetAttr: input[%+v]", *input)
	ctx := meta.NewContext(cancel, input.Uid, input.Pid, input.Gid)
	inode := vfs.Ino(input.NodeId)
	entry, code := vfs.GetVFS().GetAttr(ctx, inode)
	if code != 0 {
		log.Infof("GetAttr err code %v", code)
		return fuse.Status(code)
	}
	attrToStat(entry.Ino, entry.Attr, &out.Attr)
	out.AttrValid = uint64(meta.FuseConf.AttrTimeout.Seconds())
	if vfs.IsSpecialNode


alue: Random().nextInt(280) + 20,
            ),
            ChartGroupBarDataItem(
              color: const Color(0xFFFF4150),
              x: index + 7,
              value: Random().nextInt(280) + 20,
            ),
          ],
        ),
        settings: const ChartGroupBarSettings(
          thickness: 8.0,
          radius: BorderRadius.all(Radius.circular(4.0)),
        ),
      ),
      ChartTooltipLayer(
        shape: () => ChartTooltipBarShape<ChartGroupBarDataItem>(
          backgroundColor: Colors.white,
          currentPos: (item) => item.currentValuePos,
          currentSize: (item) => item.currentValueSize,
          onTextValue: (item) => '€${item.value.toString()}',
          marginBottom: 6.0,
          padding: const EdgeInsets.symmetric(
            horizontal: 12.0,
            vertical: 8.0,
          ),
          radius: 6.0,
          textStyle: const TextStyle(
            color: Color(0xFF8043F9),
            letterSpacing: 0.2,
            fontSize: 14.0,
            fontWeight: FontWeight.w700,
          ),
        ),
      ),
    ];
  }
}
import 'package:flutter/material.dart';

import '../widgets/custom_app_bar.dart';

class PrivacyPolicyPage extends StatelessWidget {
  static const routeName = '/privacy';

  const PrivacyPolicyPage({super.key});

  @override
  Widget build(BuildContext context) {
    return const Scaffold(
      appBar: CustomAppBar(),
      body: SingleChildScrollView(
        padding: EdgeInsets.symmetric(
          horizontal: 160,
          vertical: 50,
        ),
        child: SelectableText(policy),
        // child: Text(policy),
      ),
    );
  }
}

const String policy = '''
**Privacy Policy**

Merritt Codes built the Adventure List app as an Open Source app. This SERVICE is provided by Merritt Codes at no cost and is intended for use as is.

This page is used to inform visitors regarding my policies with the collection, use, and disclosure of Personal Information if anyone decided to use my Service.

If you choose to use my Service, then you agree to the collection and use of information in relation to this policy. The Personal Information that I collect is used for providing and improving the Service. I will not use or share your information with anyone except as described in this Privacy Policy.

The terms used in this Privacy Policy have the same meanings as in our Terms and Conditions, which are accessible at Adventure List unless otherwise defined in this Privacy Policy.

**Information Collection and Use**

For a better experience, while using our Service, I may require you to provide us with certain personally identifiable information, including but not limited to email, calendar. The information that I request will be retained on your device and is not collected by me in any way.

The app does use third-party services that may collect information used to identify you.

Link to the privacy policy of third-party service providers used by the app

*   [Google Play Services](https://www.google.com/policies/privacy/)
*   [Google Analytics for Firebase](https://firebase.google.com/policies/analytics)
*   [Firebase Crashlytics](https://firebase.google.com/support/privacy/)

**Limited Use**

Adventure List uses your Google account to authenticate your signin session,
which allows the app to:

- View your email address
- Read/write data to your Google Calendars, which is used to synchronize data
  between devices

This data is transmitted to and from the respective Google services to provide
the app's service, however none of this information is transmitted to the
developer.

Adventure List's use and transfer to any other app of information received from Google APIs will


	tasks[1].SetPhase(operationsv1alpha2.NodeTaskPhaseSuccessful)
	assert.Equal(t, operationsv1alpha2.NodeTaskPhaseSuccessful, tasks[1].Phase())
}
/*
Copyright 2025 The KubeEdge Authors.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

package downstream

import (
	"context"
	"errors"
	"fmt"
	"reflect"

	"github.com/go-logr/logr"
	"k8s.io/klog/v2"

	operationsv1alpha2 "github.com/kubeedge/api/apis/operations/v1alpha2"
	crdcliset "github.com/kubeedge/api/client/clientset/versioned"
	"github.com/kubeedge/kubeedge/cloud/pkg/common/client"
	"github.com/kubeedge/kubeedge/cloud/pkg/common/informers"
	"github.com/kubeedge/kubeedge/cloud/pkg/taskmanager/executor"
	"github.com/kubeedge/kubeedge/cloud/pkg/taskmanager/status"
	"github.com/kubeedge/kubeedge/cloud/pkg/taskmanager/wrap"
)

type ImagePrePullJobHandler struct {
	logger         logr.Logger
	crdcli         crdcliset.Interface
	downstreamChan chan wrap.NodeJob
}

func newImagePrepullJobHandler(ctx context.Context) (*ImagePrePullJobHandler, error) {
	logger := klog.FromContext(ctx).
		WithName(fmt.Sprintf("downstream-%s", operationsv1alpha2.ResourceImagePrePullJob))
	handler := &ImagePrePullJobHandler{
		logger:         logger,
		crdcli:         client.GetCRDClient(),
		downstreamChan: make(chan wrap.NodeJob, downstreamChanSize),
	}
	informer := informers.GetInformersManager().
		GetKubeEdgeInformerFactory().
		Operations().
		V1alpha2().
		ImagePrePullJobs().
		Informer()
	_, err := informer.AddEventHandler(NewNodeJobEventHandler(handler.logger, handler.downstreamChan))
	if err != nil {
		return nil, fmt.Errorf("failed to add ImagePrePullJob event handler, err: %v", err)
	}
	return handler, nil
}

func (h *ImagePrePullJobHandler) Logger() logr.Logger {
	return h.logger
}

func (h *ImagePrePullJobHandler) CanDownstreamPhase(obj any) bool {
	job, ok := obj.(*operationsv1alpha2.ImagePrePullJob)
	if !ok {
		h.logger.Error(nil, "failed to convert obj to ImagePrePullJob", "invalid type", reflect.TypeOf(obj))
		return false
	}
	// TODO: retry execution is not supported due to some reasons.
	// To support retry execution, the cloud edge needs to consider many situations.
	return job.Status.Phase == operationsv1alpha2.JobPhaseInit
}

func (h *ImagePrePullJobHandler) ExecutorChan() chan wrap.NodeJob {
	return h.downstreamChan
}

func (h *ImagePrePullJobHandler) InterruptExecutor(obj any) {
	job, ok := obj.(*operationsv1alpha2.ImagePrePullJob)
	if !ok {
		h.logger.Error(nil, "failed to convert obj to ImagePrePullJob", "invalid type", reflect.TypeOf(obj))
		return
	}
	exec, err :=


 1,
            /* fifth key has length 18 "publisher_confirms" */
            18, 112, 117, 98, 108, 105, 115, 104, 101, 114, 95, 99, 111, 110, 102, 105, 114, 109, 115,
            /* value of type 116, "t", boolean, true */
            116, 1,
          /* sixth key has length 11 "information" */
          11, 105, 110, 102, 111, 114, 109, 97, 116, 105, 111, 110,
          /* value of type 83, "S" long-str ; len 24 ; data "See http://pika.rtfd.org" */
          83, 0, 0, 0, 24,
          83, 101, 101, 32, 104, 116, 116, 112, 58, 47, 47, 112, 105, 107, 97, 46, 114, 116, 102, 100, 46, 111, 114, 103,
          /* seventh key has length 7, "version" */
          7, 118, 101, 114, 115, 105, 111, 110,
          /* value of type 83, "S" long-str ; length 5 ; "1.1.0" */
          83, 0, 0, 0, 5,
          49, 46, 49, 46, 48,
        /* client-properties table ends here */
        /* field mechanism, length 5, "PLAIN" */
        5, 80, 76, 65, 73, 78,
        /* field response, longstr, length 7, "\x00admin\x00" */
        0, 0, 0, 7, 0, 97, 100, 109, 105, 110, 0,
        /* locale, shortstr, len 5 "en_US" */
        5, 101, 110, 95, 85, 83,
    ];

    let method = methods::parse_method(&raw_data).unwrap();

    assert_eq!(
        method,
        Method::ConnectionStartOk(ConnectionStartOk {
            client_properties: HashMap::from([
                (
                    "product".to_owned(),
                    FieldValue::LongString("Pika Python Client Library".into())
                ),
                (
                    "platform".to_owned(),
                    FieldValue::LongString("Python 3.8.10".into())
                ),
                (
                    "capabilities".to_owned(),
                    FieldValue::FieldTable(HashMap::from([
                        (
                            "authentication_failure_close".to_owned(),
                            FieldValue::Boolean(true)
                        ),
                        ("basic.nack".to_owned(), FieldValue::Boolean(true)),
                        ("connection.blocked".to_owned(), FieldValue::Boolean(true)),
                        (
                            "consumer_cancel_notify".to_owned(),
                            FieldValue::Boolean(true)
                        ),
                        ("publisher_confirms".to_owned(), FieldValue::Boolean(true)),
                    ]))
                ),
                (
                    "information".to_owned(),
                    FieldValue::LongString("See http://pika.rtfd.org".into())
                ),
                ("version".to_owned(), FieldValue::LongString("1.1.0".into()))
            ]),
            mechanism: "PLAIN".to_owned(),
            response: "\x00admin\x00".into(),
            locale: "en_US".to_owned()
        })
    );
}
//! # ADSR

use super::*;
use std::time::Duration;
use crate::utils::*;

/// Enum of the states an ADSR filter exists in.
pub enum ADSRState {
    /// Attack state.
    Attack,
    /// Decay state.
    Decay,
    /// Sustain state.
    Sustain,
    /// Release state.
    Release,
    /// State for when the ADSR has completed it's processing.
    Stopped,
}

/// Attack-decay-sustain-release filter.
///
/// Creates


  /// In the following two cases, reset [mean] to 0 and [stddev] to 1 to bypass the
  /// normalization.
  ///
  /// 1. Both [mean] and [stddev] are 0.
  ///
  /// 2. [mean] is 0 and [stddev] is Infinity.
  ///
  ///
  /// Note: If [mean] is set to 0 and [stddev] is set to 1, no computation will
  /// happen, and original input will be directly returned in execution.
  ///
  /// Note: The returned [TensorBuffer] is always a [TfLiteType.float32] tensor at
  /// present, except that the input is a [TfLiteType.uint8] tensor, [mean] is set to 0 and
  /// [stddev] is set to 1.
  ///
  ///
  /// Throws [ArgumentError] if [stddev] is zero.
  NormalizeOp(double mean, double stddev) {
    if (mean == 0.0 && (stddev == 0.0 || stddev.isInfinite)) {
      stddev = 1.0;
    }

    SupportPreconditions.checkArgument(stddev != 0.0,
        errorMessage: "Stddev cannot be zero.");
    bool meansIsZeroAndDevsIs1 = false;
    if (mean == 0.0 && stddev == 1.0) {
      meansIsZeroAndDevsIs1 = true;
    }

    this.isIdentityOp = meansIsZeroAndDevsIs1;
    this.mean = [mean];
    this.stddev = [stddev];
    this.numChannels = 1;
  }

  /// Initializes a NormalizeOp. When being called, it creates a new [TensorBuffer], which
  /// satisfies:
  ///
  /// ```
  ///   // Pseudo code. [...][i] means a certain element whose channel id is i.
  ///   output[...][i] = (input[...][i] - mean[i]) / stddev[i]
  /// ```
  ///
  ///
  /// Note: If all values in [mean] are set to 0 and all [stddev] are set to 1, no
  /// computation will happen, and original input will be directly returned in execution.
  ///
  /// Note: The returned [TensorBuffer] is always a [TfLiteType.float32] tensor at
  /// present, except that the input is a [TfLiteType.uint8] tensor, all [mean] are set to
  /// 0 and all [stddev] are set to 1.
  ///
  /// List<double> [mean] are the mean values to be subtracted first for each channel.
  ///
  /// List<double> [stddev] the standard deviation values to divide then for each channel.
  ///
  ///
  /// Throws [ArgumentError] if any [stddev] is zero, or [mean] has different
  /// number of elements with [stddev], or any of them is empty.
  NormalizeOp.multipleChannels(List<double> mean, List<double> stddev) {
    SupportPreconditions.checkNotNull(mean, message: "Mean cannot be null");
    SupportPreconditions.checkNotNull(stddev, message: "Stddev cannot be null");
    SupportPreconditions.checkArgument(mean.length == stddev.length,
        errorMessage:
            "Per channel normalization requires same number of means and stddevs");
    SupportPreconditions.checkArgument(mean.length > 0,
        errorMessage: "Means and stddevs are empty.");
    this.mean = mean.toList();
    this.stddev = stddev.toList();

    bool allMeansAreZeroAndAllDevsAre1 = true;
    this.numChannels = mean.length;
    for (int i = 0; i < numChannels; i++) {
      SupportPreconditions.checkArgument(this.stddev[i] != 0,
          errorMessage: "Stddev cannot be zero.");
      if (this.stddev[i] != 1 || this.mean[i] != 0) {
        allMeansAreZeroAndAllDevsAre1 = false;
      }
    }
    this.isIdentityOp = allMeansAreZeroAndAllDevsAre1;
  }

  /// Applies the defined normalization on given [input]


//
//  OCHamcrest - HCIsCollectionContainingInAnyOrder.h
//  Copyright 2011 hamcrest.org. See LICENSE.txt
//
//  Created by: Jon Reid
//

#import <OCHamcrestIOS/HCBaseMatcher.h>

/**
    Matches a collection if its elements, in any order, satisfy a list of matchers.

    @b Factory: @ref containsInAnyOrder
    @ingroup collection_matchers
 */
@interface HCIsCollectionContainingInAnyOrder : HCBaseMatcher
{
    NSMutableArray *matchers;
}

+ (id)isCollectionContainingInAnyOrder:(NSMutableArray *)itemMatchers;
- (id)initWithMatchers:(NSMutableArray *)itemMatchers;

@end

#pragma mark -

/**
    Matches a collection if its elements, in any order, satisfy a list of matchers.

    @b Synonym: @ref containsInAnyOrder
    @param itemMatcher1  Comma-separated list of matchers - or values for @ref equalTo matching - ending with @c nil.
    @see HCIsCollectionContainingInAnyOrder
    @ingroup collection_matchers
 */
OBJC_EXPORT id<HCMatcher> HC_containsInAnyOrder(id itemMatcher1, ...);

/**
    containsInAnyOrder(itemMatcher1, ...) -
    Matches a collection if its elements, in any order, satisfy a list of matchers.

    Synonym for @ref HC_containsInAnyOrder, available if @c HC_SHORTHAND is defined.
    @param itemMatcher1  Comma-separated list of matchers - or values for @ref equalTo matching - ending with @c nil.
    @see HCIsCollectionContainingInAnyOrder
    @ingroup collection_matchers
 */
#ifdef HC_SHORTHAND
    #define containsInAnyOrder HC_containsInAnyOrder
#endif


时／Higurashi When They Cry／ひぐらしのなく頃に／暮蝉悲鸣时／暮蝉鸣泣时／暮蝉悲鸣之时／秋蝉鸣泣之时／蝉鸣时分／蝉鸣之时／蜩鸣之时／寒蝉鸣泣时／蝉在叫人坏掉／出题 解题 礼 虚崩编 鬼隐篇 礼 绵流篇 祟杀篇 暇溃篇 罪灭篇 目明篇 皆杀篇 罪灭篇 携带版 原版 萌化版

<time itemprop="dateCreated" datetime="2024-09-15T21:20:00+08:00" content="2024-09-15">09-15</time>

和怪物恋爱吧／クリーチャーと恋しよっ! -ここのえこころ-／和怪物谈恋爱吧！／九重心／人虫之恋／Kokoro

<time itemprop="dateCreated" datetime="2024-09-15T02:25:00+08:00" content="2024-09-15">09-15</time>

是谁杀了知更鸟／誰が殺したコマドリを／谁杀死了知更鸟？／Qui a tué Cock Robin, Who killed the robin?

<time itemprop="dateCreated" datetime="2024-08-27T14:55:00+08:00" content="2024-08-27">08-27</time>

Tiny Dungeon ~BRAVE or SLAVE~／微小地牢－奴隶或勇士 完结篇／タイニイ ダンジョン ブレイブオアスレイブ

<time itemprop="dateCreated" datetime="2024-08-27T14:50:00+08:00" content="2024-08-27">08-27</time>

Tiny Dungeon ~BIRTH for YOURS~／微小地牢－为你而生 神族篇／タイニイ ダンジョン バースフォーユアズ

<time itemprop="dateCreated" datetime="2024-08-27T14:45:00+08:00" content="2024-08-27">08-27</time>

Tiny Dungeon ~BLESS of DRAGON~／微小地牢－金龙祝福 龙族篇／タイニイ ダンジョン ブレスオブドラゴン

<article i


/*
 * Copyright (C) 2015 Anshuman Khandual, IBM Corporation.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version
 * 2 of the License, or (at your option) any later version.
 */
#define VEC_MAX 128
#define VSX_MAX 32
#define VMX_MAX 32

/*
 * unsigned long vsx[32]
 * unsigned long load[128]
 */
int validate_vsx(unsigned long *vsx, unsigned long *load)
{
	int i;

	for (i = 0; i < VSX_MAX; i++) {
		if (vsx[i] != load[2 * i + 1]) {
			printf("vsx[%d]: %lx load[%d] %lx\n",
					i, vsx[i], 2 * i + 1, load[2 * i + 1]);
			return TEST_FAIL;
		}
	}
	return TEST_PASS;
}

/*
 * unsigned long vmx[32][2]
 * unsigned long load[128]
 */
int validate_vmx(unsigned long vmx[][2], unsigned long *load)
{
	int i;

	for (i = 0; i < VMX_MAX; i++) {
		#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
		if ((vmx[i][0] != load[64 + 2 * i]) ||
				(vmx[i][1] != load[65 + 2 * i])) {
			printf("vmx[%d][0]: %lx load[%d] %lx\n",
					i, vmx[i][0], 64 + 2 * i,
					load[64 + 2 * i]);
			printf("vmx[%d][1]: %lx load[%d] %lx\n",
					i, vmx[i][1], 65 + 2 * i,
					load[65 + 2 * i]);
			return TEST_FAIL;
		}
		#else  /*
			* In LE each value pair is stored in an
			* alternate manner.
			*/
		if ((vmx[i][0] != load[65 + 2 * i]) ||
				(vmx[i][1] != load[64 + 2 * i])) {
			printf("vmx[%d][0]: %lx load[%d] %lx\n",
					i, vmx[i][0], 65 + 2 * i,
					load[65 + 2 * i]);
			printf("vmx[%d][1]: %lx load[%d] %lx\n",
					i, vmx[i][1], 64 + 2 * i,
					load[64 + 2 * i]);
			return TEST_FAIL;
		}
		#endif
	}
	return TEST_PASS;
}

/*
 * unsigned long store[128]
 * unsigned long load[128]
 */
int compare_vsx_vmx(unsigned long *store, unsigned long *load)
{
	int i;

	for (i = 0; i < VSX_MAX; i++) {
		if (store[1 + 2 * i] != load[1 + 2 * i]) {
			printf("store[%d]: %lx load[%d] %lx\n",
					1 + 2 * i, store[i],
					1 + 2 * i, load[i]);
			return TEST_FAIL;
		}
	}

	#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
	for (i = 64; i < VEC_MAX; i++) {
		if (store[i] != load[i]) {
			printf("store[%d]: %lx load[%d] %lx\n",
					i, store[i], i, load[i]);
			return TEST_FAIL;
		}
	}
	#else	/* In LE each value pair is stored in an alternate manner */
	for (i = 64; i < VEC_MAX; i++) {
		if (!(i % 2) && (store[i] != load[i+1])) {
			printf("store[%d]: %lx load[%d] %lx\n",
					i, store[i], i+1, load[i+1]);
			return TEST_FAIL;
		}
		if ((i % 2) && (store[i] != load[i-1])) {
			printf("here store[%d]: %lx load[%d] %lx\n",
					i, store[i], i-1, load[i-1]);
			return TEST_FAIL;
		}
	}
	#endif
	return TEST_PASS;
}

void load_vsx_vmx(unsigned long *load, unsigned long *vsx,
		unsigned long vmx[][2])
{
	int i;

	for (i = 0; i < VSX_MAX; i++)
		vsx[i] = load[1 + 2 * i];

	for (i = 0; i < VMX_MAX; i++) {
		vmx[i][0] = load[64 + 2 * i];
		vmx[i][1] = load[65 + 2 * i];
	}
}

void loadvsx(void *p, int tmp);
void storevsx(void *p, int tmp);


{% endif %}

{% if result.seed is defined %}
 • {{ icon_big('arrow-swap') }} {{ _('Seeder') }} {{ result.seed }} • {{ _('Leecher') }} {{ result.leech }}
{% endif %}

{%- if result.filesize %}
{{ icon_big('floppy-disk') }} {{ _('Filesize') }}
    {%- if result.filesize < 1024 %}{{ result.filesize }} {{ _('Bytes') }}
    {%- elif result.filesize < 1024*1024 %}{{ '{0:0.2f}'.format(result.filesize/1024) }} {{ _('kiB') }}
    {%- elif result.filesize < 1024*1024*1024 %}{{ '{0:0.2f}'.format(result.filesize/1024/1024) }} {{ _('MiB') }}
    {%- elif result.filesize < 1024*1024*1024*1024 %}{{ '{0:0.2f}'.format(result.filesize/1024/1024/1024) }} {{ _('GiB') }}
    {%- else %}{{ '{0:0.2f}'.format(result.filesize/1024/1024/1024/1024) }} {{ _('TiB') }}{% endif -%}

{%- endif -%}

{%- if result.files %}
{{ icon_big('file') }} {{ _('Number of Files') }} {{ result.files }}
{% endif -%}

{%- if result.content %}
{{ result.content|safe }}
{% endif -%}
{{- result_sub_footer(result, proxify) -}}
{{- result_footer(result) }}
<!DOCTYPE html><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Documentation for Rustdoc"><meta name="keywords" content="rust, rustlang, rust-lang"><title>Rustdoc help</title><link rel="preload" as="font" type="font/woff2" crossorigin href="./static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="./static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="./static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="./static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="./static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="./static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="./static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="./static.files/rustdoc-93196c7a1c3542a8.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="./static.files/light-4743e13df3dfe8c4.css"><link rel="stylesheet" disabled href="./static.files/dark-0e1b889528bd466b.css"><link rel="stylesheet" disabled href="./static.files/ayu-65289d5d067c7c66.css">


d(DocumentsContract.Root.COLUMN_ROOT_ID, DEFAULT_ROOT_ID)
                add(DocumentsContract.Root.COLUMN_FLAGS, DocumentsContract.Root.FLAG_LOCAL_ONLY)
                add(DocumentsContract.Root.COLUMN_ICON, R.drawable.ic_service)
                add(DocumentsContract.Root.COLUMN_TITLE, "FlClash")
                add(DocumentsContract.Root.COLUMN_SUMMARY, "Data")
                add(DocumentsContract.Root.COLUMN_DOCUMENT_ID, "/")
            }
        }
    }

    override fun queryChildDocuments(
        parentDocumentId: String,
        projection: Array<String>?,
        sortOrder: String?
    ): Cursor {
        val result = MatrixCursor(resolveDocumentProjection(projection))
        val parentFile = if (parentDocumentId == "/") {
            context?.filesDir
        } else {
            File(parentDocumentId)
        } ?: throw FileNotFoundException("Parent directory not found")
        parentFile.listFiles()?.forEach { file ->
            includeFile(result, file)
        }
        return result
    }

    override fun queryDocument(documentId: String, projection: Array<String>?): Cursor {
        val result = MatrixCursor(resolveDocumentProjection(projection))
        val file = File(documentId)
        includeFile(result, file)
        return result
    }

    override fun openDocument(
        documentId: String,
        mode: String,
        signal: CancellationSignal?
    ): ParcelFileDescriptor {
        val file = File(documentId)
        val accessMode = ParcelFileDescriptor.parseMode(mode)
        return ParcelFileDescriptor.open(file, accessMode)
    }

    private fun includeFile(result: MatrixCursor, file: File) {
        result.newRow().apply {
            add(DocumentsContract.Document.COLUMN_DOCUMENT_ID, file.absolutePath)
            add(DocumentsContract.Document.COLUMN_DISPLAY_NAME, file.name)
            add(DocumentsContract.Document.COLUMN_SIZE, file.length())
            add(
                DocumentsContract.Document.COLUMN_FLAGS,
                DocumentsContract.Document.FLAG_SUPPORTS_WRITE or DocumentsContract.Document.FLAG_SUPPORTS_DELETE
            )
            add(DocumentsContract.Document.COLUMN_MIME_TYPE, getDocumentType(file))
        }
    }

    private fun getDocumentType(file: File): String {
        return if (file.isDirectory) {
            DocumentsContract.Document.MIME_TYPE_DIR
        } else {
            "application/octet-stream"
        }
    }

    private fun resolveDocumentProjection(projection: Array<String>?): Array<String> {
        return projection ?: DEFAULT_DOCUMENT_COLUMNS
    }
}plugins {
    alias(libs.plugins.weui.android.compose.application)
}

android {
    namespace = "top.chengdongqing.weui"

    defaultConfig {
        applicationId = "top.chengdongqing.weui"
        targetSdk = 34
        versionCode = 1
        versionName = "1.0"

        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
        vectorDrawables {
            useSupportLibrary = true
        }

        android {
            defaultConfig {
                ndk {
                    abiFilters.addAll(listOf("arm64-v8a")) // 暂仅支持64位ARM架构的设备（32位：armeabi-v7a）
                }
            }
        }
    }

    buildTypes {
        /*debug {
            isMinifyEnabled = true
            isShrinkResources = true

            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }*/
        release {
            isMinifyEnabled = true
            is


-- ROBLOX upstream: https://github.com/facebook/jest/blob/v28.0.0/packages/jest-test-result/src/helpers.ts
--[[*
 * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 ]]
local CurrentModule = script.Parent
local Packages = CurrentModule.Parent

local LuauPolyfill = require(Packages.LuauPolyfill)
local Boolean = LuauPolyfill.Boolean

local typesModule = require(Packages.JestTypes)
type Config_Path = typesModule.Config_Path

local types = require(CurrentModule.types)
type AggregatedResult = types.AggregatedResult
type SerializableError = types.SerializableError
type TestResult = types.TestResult

local function makeEmptyAggregatedTestResult(): AggregatedResult
	return {
		numFailedTestSuites = 0,
		numFailedTests = 0,
		numPassedTestSuites = 0,
		numPassedTests = 0,
		numPendingTestSuites = 0,
		numPendingTests = 0,
		numRuntimeErrorTestSuites = 0,
		numTodoTests = 0,
		numTotalTestSuites = 0,
		numTotalTests = 0,
		openHandles = {},
		snapshot = {
			added = 0,
			didUpdate = false, -- is set only after the full run
			failure = false,
			filesAdded = 0, -- combines individual test results + removed files after the full run
			filesRemoved = 0,
			filesRemovedList = {},
			filesUnmatched = 0,
			filesUpdated = 0,
			matched = 0,
			total = 0,
			unchecked = 0,
			uncheckedKeysByFile = {},
			unmatched = 0,
			updated = 0,
		},
		startTime = 0,
		success = true,
		testResults = {},
		wasInterrupted = false,
	}
end

-- Add individual test result to an aggregated test result
local function buildFailureTestResult(testPath: Config_Path, err: SerializableError): TestResult
	return {
		console = nil,
		displayName = nil,
		failureMessage = nil,
		leaks = false,
		numFailingTests = 0,
		numPassingTests = 0,
		numPendingTests = 0,
		numTodoTests = 0,
		openHandles = {},
		perfStats = { ["end"] = 0, runtime = 0, slow = false, start = 0 },
		skipped = false,
		snapshot = {
			added = 0,
			fileDeleted = false,
			matched = 0,
			unchecked = 0,
			uncheckedKeys = {},
			unmatched = 0,
			updated = 0,
		},
		testExecError = err,
		testFilePath = testPath,
		testResults = {},
	}
end

local function addResult(aggregatedResults: AggregatedResult, testResult: TestResult): ()
	-- `todos` are new as of Jest 24, and not all runners return it.
	-- Set it to `0` to avoid `NaN`
	if not Boolean.toJSBoolean(testResult.numTodoTests) then
		testResult.numTodoTests = 0
	end
	table.insert(aggregatedResults.testResults, testResult)
	aggregatedResults.numTotalTests += testResult.numPassingTests + testResult.numFailingTests + testResult.numPendingTests


}.x-ie-shadow{background-color:#777;display:none;position:absolute;overflow:hidden;zoom:1}.x-box-tl{background:transparent no-repeat 0 0;zoom:1}.x-box-tc{height:8px;background:transparent repeat-x 0 0;overflow:hidden}.x-box-tr{background:transparent no-repeat right -8px}.x-box-ml{background:transparent repeat-y 0;padding-left:4px;overflow:hidden;zoom:1}.x-box-mc{background:repeat-x 0 -16px;padding:4px 10px}.x-box-mc h3{margin:0 0 4px 0;zoom:1}.x-box-mr{background:transparent repeat-y right;padding-right:4px;overflow:hidden}.x-box-bl{background:transparent no-repeat 0 -16px;zoom:1}.x-box-bc{background:transparent repeat-x 0 -8px;height:8px;overflow:hidden}.x-box-br{background:transparent no-repeat right -24px}.x-box-tl,.x-box-bl{padding-left:8px;overflow:hidden}.x-box-tr,.x-box-br{padding-right:8px;overflow:hidden}.x-box-tl{background-image:url('../../resources/themes/images/default/box/corners.gif')}.x-box-tc{background-image:url('../../resources/themes/images/default/box/tb.gif')}.x-box-tr{background-image:url('../../resources/themes/images/default/box/corners.gif')}.x-box-ml{background-image:url('../../resources/themes/images/default/box/l.gif')}.x-box-mc{background-color:#eee;background-image:url('../../resources/themes/images/default/box/tb.gif');font-family:"Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif;color:#393939;font-size:15px}.x-box-mc h3{font-size:18px;font-weight:bold}.x-box-mr{background-image:url('../../resources/themes/images/default/box/r.gif')}.x-box-bl{background-image:url('../../resources/themes/images/default/box/corners.gif')}.x-box-bc{background-image:url('../../resources/themes/images/default/box/tb.gif')}.x-box-br{background-image:url('../../resources/themes/images/default/box/corners.gif')}.x-box-blue .x-box-bl,.x-box-blue .x-box-br,.x-box-blue .x-box-tl,.x-box-blue .x-box-tr{background-image:url('../../resources/themes/images/default/box/corners-blue.gif')}.x-box-blue .x-box-bc,.x-box-blue .x-box-mc,.x-box-blue .x-box-tc{background-image:url('../../resources/themes/images/default/box/tb-blue.gif')}.x-box-blue .x-box-mc{background-color:#c3daf9}.x-box-blue .x-box-mc h3{color:#17385b}.x-box-blue .x-box-ml{background-image:url('../../resources/themes/images/default/box/l-blue.gif')}.x-box-blue .x-box-mr{background-image:url('../../resources/themes/images/default/box/r-blue.gif')}.x-container{zoom:1}.x-container:before{content:"";clear:both;display:table}table.x-container:before,tbody.x-container:before,tr.x-container:before{display:none}.x-focus-element{position:absolute;top:-10px;left:-10px;width:0;height:0}.x-focus-frame{position:absolute;left:0;top:0;z-index:100000000;width:0;heigh


ork.security.core.GrantedAuthority
import org.springframework.security.core.userdetails.UserDetails
import org.springframework.security.core.userdetails.UserDetailsService
import org.springframework.security.core.userdetails.UsernameNotFoundException
import org.springframework.security.test.context.support.WithUserDetails
import org.springframework.stereotype.Service

@Service
internal class KotlinUserDetailsServiceImpl : UserDetailsService {
    @Throws(UsernameNotFoundException::class)
    override fun loadUserByUsername(username: String): UserDetails? {
        return null
    }
}

@Configuration
internal open class KotlinUserDetailsConfiguration {
    @Bean
    open fun kotlinAdmin(): KotlinUserDetailsServiceImpl? {
        return null
    }

    @Bean
    @Qualifier("kotlinTest")
    open fun kotlinAdminUserDetailsService(): UserDetailsService {
        return UserDetailsService { _: String? ->
            val userDetails = object : UserDetails {
                override fun getAuthorities(): Collection<GrantedAuthority> {
                    return emptyList()
                }

                override fun getPassword(): String {
                    return "pass"
                }

                override fun getUsername(): String {
                    return "name"
                }

                override fun isAccountNonExpired(): Boolean {
                    return false
                }

                override fun isAccountNonLocked(): Boolean {
                    return false
                }

                override fun isCredentialsNonExpired(): Boolean {
                    return false
                }

                override fun isEnabled(): Boolean {
                    return false
                }
            }
            userDetails
        }
    }
}
/*
 * Copyright © 2024 Explyt Ltd
 *
 * All rights reserved.
 *
 * This code and software are the property of Explyt Ltd and are protected by copyright and other intellectual property laws.
 *
 * You may use this code under the terms of the Explyt Source License Version 1.0 ("License"), if you accept its terms and conditions.
 *
 * By installing, downloading, accessing, using, or distributing this code, you agree to the terms and conditions of the License.
 * If you do not agree to such terms and conditions, you must cease using this code and immediately delete all copies of it.
 *
 * You may obtain a copy of the License at: https://github.com/explyt/spring-plugin/blob/main/EXPLYT-SOURCE-LICENSE.md
 *
 * Unauthorized use of this code constitutes a violation of intellectual property rights and may result in legal action.
 */

package com.explyt.jpa.ql.reference

import com.explyt.spring.test.ExplytJavaLightTestCase
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.util.Computable
import com.intellij.openapi.vfs.readText
import com.intellij.testFramework.TestDataPath

private const val TEST_DATA_PATH = "reference/internal/rename"

/**
 * Tests references from jpql to itself
 */
@TestDataPath("\$CONTENT_ROOT/../../testdata/$TEST_DATA_PATH")
class JpqlInternalReferenceRenameTest : ExplytJavaLightTestCase() {
    override fun getTestDataPath() = "testdata/$TEST_DATA_PATH"

    fun testAliasInSelect() = doTest()
    fun testAliasInWhere() = doTest()
    fun testAliasInJoin() = doTest()
    fun testAliasToJoinFromWhere() = doTest()
    fun testAliasToJoinFromSelect() = doTest()
    fun testAliasInSubqueryWithShadowing() = doTest()

    @Suppress("UnstableApiUsage")
    private fun doTest() {
        val name = getTestName(true)
        val vf = myFixture.copyFileToProject(
            "$name.jpql",
            "$name.jpql"
        )
        myFixture.configureFromExistingVirtualFile(vf)

        val element = myFixture.elementAtCaret

        myFixture.renameElement(element, "newName")

        val vf


= "堅耐腰帶",
[14391] = "堅耐之劍",
[14392] = "堅耐之杖",
[14393] = "堅耐之盾",
[14394] = "堅耐之弓",
[14395] = "暗影法術研究",
[14396] = "扭曲虛空的魔法",
[14397] = "彈力披肩",
[14398] = "彈力外套",
[14399] = "彈力長靴",
[14400] = "彈力斗篷",
[14401] = "彈力軟帽",
[14402] = "彈力手環",
[14403] = "彈力纏手",
[14404] = "彈力護腿",
[14405] = "彈力長袍",
[14406] = "彈力之索",
[14407] = "石布外衣",
[14408] = "石布長靴",
[14409] = "石布斗篷",
[14410] = "石布頭環",
[14411] = "石布手套",
[14412] = "石布肩冑",
[14413] = "石布長袍",
[14414] = "石布腰帶",
[14415] = "石布馬褲",
[14416] = "石布束腕",
[14417] = "絲沙外套",
[14418] = "絲沙長靴",
[14419] = "絲沙護腕",
[14420] = "絲沙斗篷",
[14421] = "絲沙頭環",
[14422] = "絲沙手套",
[14423] = "絲沙墊肩",
[14424] = "絲沙裹腿",
[14425] = "絲沙裹衣",
[14426] = "絲沙束腰",
[14427] = "逐風裹衣",
[14428] = "逐風薄靴",
[14429] = "逐風腕輪",
[14430] = "逐風披風",
[14431] = "逐風手甲",
[14432] = "逐風襯肩",
[14433] = "逐風毛褲",
[14434] = "逐風長袍",
[14435] = "逐風繫腰",
[14436] = "逐風頭冠",
[14437] = "毒幕外衣",
[14438] = "毒幕長靴",
[14439] = "毒幕護臂",
[14440] = "毒幕斗篷",
[14441] = "毒幕面具",
[14442] = "毒幕長手套",
[14443] = "毒幕披肩",
[14444] = "毒幕護腿",
[14445] = "毒幕長袍",
[14446] = "毒幕腰帶",
[14447] = "精靈貴族薄靴",
[14448] = "精靈貴族手鐲",
[14449] = "精靈貴族之冠",
[14450] = "精靈貴族披風",
[14451] = "精靈貴族手套",


 OF THE POSSIBILITY OF SUCH DAMAGE.
 */
package org.openimaj.experiment.evaluation.classification.analysers.confusionmatrix;

import org.openimaj.experiment.evaluation.ResultAggregator;

/**
 * A {@link ResultAggregator} for collecting multiple {@link CMResult}s
 * and producing a single unified report.
 *
 * @author Jonathon Hare (jsh2@ecs.soton.ac.uk)
 *
 * @param <CLASS> The type of the classes represented by the {@link CMResult}s
 */
public class CMAggregator<CLASS>
	implements
		ResultAggregator<CMResult<CLASS>, AggregatedCMResult<CLASS>>
{
	AggregatedCMResult<CLASS> aggregated = new AggregatedCMResult<CLASS>();

	@Override
	public void add(CMResult<CLASS> result) {
		aggregated.matrices.add(result);
	}

	@Override
	public AggregatedCMResult<CLASS> getAggregatedResult() {
		return aggregated;
	}
}
/**
 * Copyright (c) 2011, The University of Southampton and the individual contributors.
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without modification,
 * are permitted provided that the following conditions are met:
 *
 *   * 	Redistributions of source code must retain the above copyright notice,
 * 	this list of conditions and the following disclaimer.
 *
 *   *	Redistributions in binary form must reproduce the above copyright notice,
 * 	this list of conditions and the following disclaimer in the documentation
 * 	and/or other materials provided with the distribution.
 *
 *   *	Neither the name of the University of Southampton nor the names of its
 * 	contributors may be used to endorse or promote products derived from this
 * 	software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
package org.openimaj.experiment.evaluation.cluster.analyser;

import gnu.trove.map.hash.TIntIntHashMap;

import java.util.HashMap;
import java.util.Map;

import org.openimaj.util.pair.IntIntPair;

/**
 * Tools for {@link ClusterAnalyser} instances
 * @author Sina Samangooei (ss@ecs.soton.ac.uk)
 */
public class ClusterAnalyserUtils{
	/**
	 * Map index to cluster from cluster array
	 * @param clustered
	 * @return index to cluster
	 */
	public static Map<Integer, Integer> invert(int[][] clustered) {
		int cluster = 0;
		Map<Integer, Integer> ret = new HashMap<Integer, Integer>();
		for (int[] is : clustered) {
			for (int index : is) {
				ret.put(index, cluster);
			}
			cluster++;
		}
		return ret;
	}

	/**
	 * @param is
	 * @param invCor
	 * @return the cluster with the maximum
	 */
	public static IntIntPair findMaxClassCount(int[] is, Map<Integer, Integer> invCor) {
		TIntIntHashMap classCounts = new TIntIntHashMap();
		int max = 0;
		int c = 0;
		for (int i : is) {
			Integer c_i = invCor.get(i);
			if(c_i == null) continue;
			int count = classCounts.adjustOrPutValue(c_i, 1, 1);
			if(count > max){
				max = count;
				c = c


 {
        it('should return true when a room is full.', done => {
            expect(room.isFull()).to.be.true;
            done();
        });
    });

    describe('removePlayer()', () => {
        it('should decrement the number of players in the room.', done => {
            // Try removing five players in a room of 4
            room.removePlayer("Joueur1");
            expect(room.getRoomInfo().playerList.length).to.be.equal(3);
            room.removePlayer("Joueur2");
            room.removePlayer("Joueur3");
            room.removePlayer("Joueur4");
            expect(room.getRoomInfo().playerList.length).to.be.equal(0);
            room.removePlayer("Joueur5"); // Shouldn't do anything
            expect(room.getRoomInfo().playerList.length).to.be.equal(0);
            done();
        });
    });

    describe('isEmpty()', () => {
        it('should return true when a room is empty.', done => {
            expect(room.isEmpty()).to.be.true;
            done();
        });
    });
});
/* Aquí deberás crear la clase para el controlador de películas, que se encargará de extraer datos y realizar operaciones sobre el conjunto de las películas */
import { Pelicula } from "./datos/pelicula";
import { PeliculaJSON } from "./interfaz-PeliculaJSON";

export class ControladorPeliculas {

  private peliculas: Pelicula[] = [];

  private peliculasVistas: Pelicula[];
  private peliculasPendientes: Pelicula[];

  constructor() {
    // this.cargarPeliculas();
  }

  public cargarPeliculas(peliculas: PeliculaJSON[]): void {
    for (const data of peliculas) {
      this.peliculas.push(new Pelicula(
        data.id,
        data.titulo,
        data.director,
        data.fecha,
        data.cartel,
        data.vista,
        data.formato,
        data.oscars,
        data.valoracion,
      ));
    }
    this.peliculasVistas = this.filtrarPeliculasVistas(true);
    this.peliculasPendientes = this.filtrarPeliculasVistas(false);
  }

  private filtrarPeliculasVistas(vistas: boolean): Pelicula[] {
    return this.peliculas.filter( (pelicula) => pelicula.vista === vistas);
  }

  public getPeliculasVistas(vistas: boolean): Pelicula[] {
    return vistas ? this.peliculasVistas : this.peliculasPendientes;
  }

  public getNumPeliculas(vistas: boolean) {
    return this.getPeliculasVistas(vistas).length;
  }

  public getPeliculaMejorValorada(): Pelicula {
    return this.peliculas.reduce((acum, pelicula) => acum.valoracion > pelicula.valoracion ? acum : pelicula);
  }

  public getPeliculaConMasOscars(): Pelicula {
    return this.peliculas.reduce((acum, pelicula) => acum.oscars > pelicula.oscars ? acum : pelicula);
  }

  public getPeliculaMasReciente() {
    return this.peliculas.reduce((acum, pelicula) => acum.esPosteriorA(pelicula) ? acum : pelicula);
  }

  public getDirectores(): string[] {
    return this.peliculas.map((p) => p.director).filter((item, i, l) => l.indexOf(item) === i);
  }

  public getPeliculasDirector(director: string): Pelicula[] {
    return this.peliculas.filter((item) => item.director === director);
  }
}
import {
  BelongsTo,
  Column,
  DataType,
  ForeignKey,
  Model,
  Table,
  Unique,
} from 'sequelize-typescript'
import { Optional } from 'sequelize'
import { PullRequest } from './pull-request.model'
import { GitHubReviewDto } from '../dto'

interface ReviewAttributes {
  id: number
  git


03E\n        \u003Cuse xlink:href=\u0022\/themes\/custom\/bfn_website\/dist\/icons\/svg\/sprite.symbol.svg?r5wljz#arrow-right\u0022\/\u003E\n      \u003C\/svg\u003E\n      \u003C\/span\u003E\n      \u003C\/button\u003E\n    \u003C\/div\u003E\n  \u003C\/div\u003E\n\u003C\/div\u003E","withdraw_enabled":true,"reload_options":0,"reload_routes_list":"","withdraw_button_on_info_popup":false,"cookie_categories":["necessary","externe_medien"],"cookie_categories_details":{"necessary":{"uuid":"696ff21b-40be-438b-a003-992f3f79f087","langcode":"de","status":true,"dependencies":[],"id":"necessary","label":"Technisch notwendige Cookies","description":"Technisch notwendige Cookies erm\u00f6glichen grundlegende Funktionen und sind f\u00fcr die einwandfreie Funktion der Website erforderlich.","checkbox_default_state":"required","weight":0},"externe_medien":{"uuid":"a8f32dc7-81e3-4391-8394-427e1c902678","langcode":"de","status":true,"dependencies":[],"id":"externe_medien","label":"Cookies externer Medien","description":"Inhalte von Videoplattformen werden standardm\u00e4\u00dfig blockiert.","checkbox_default_state":"unchecked","weight":1}},"enable_save_preferences_button":false,"cookie_value_disagreed":"0","cookie_value_agreed_show_thank_you":"1","cookie_value_agreed":"2","containing_element":"body","settings_tab_enabled":false,"open_by_default":true},"etracker":{"track_mailto":true,"track_download":true,"track_download_extensions":"pdf doc docx","track_external":true,"messages":[]},"user":{"uid":0,"permissionsHash":"51cda6fed7ab42b74e24add717cdb100d1bd5a972b15ef8ad68394c66e8c2233"}}</script>
<script src="/sites/default/files/js/js_psvvBIT0uT4oJvOa5FKaARlFya7hNmGHUUUpG7JKnkE.js"></script>
<script src="/modules/contrib/eu_cookie_compliance/js/eu_cookie_compliance.js?v=1.19" defer></script>
<script src="/sites/default/files/js/js_B5NeOryxD_iKd4el_vI65du6bjNUPhdda-US2NyoXwk.js"></script>
<script src="//code.etracker.com/code/e.js" type="text/javascript" id="_etLoader" charset="UTF-8" data-block-cookies="true" data-respect-dnt="true" data-secure-code="kd9Tsg" async></script>
<script src="/modules/contrib/etracker/js/etracker.js?r5wljz" id="etracker_script" defer></script>

    <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
    <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
    <link rel="icon" type="image/png" sizes="192x192" href="/android-chrome-192x192.png">
    <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
    <link rel="manifest" href="/site.webmanifest">
    <link rel="mask-icon" href="/safari-pinned-tab


ead;

                finish_data[job].output_dest = output + curr_offset;
                for (auto j = 1u; j < threads_cols; ++j)
                    finish_data[job].outputs.push_back(aux_buffer[j] + curr_offset);
                finish_data[job].ofeats = curr_outfeats;

                if (apply_relu)
                    jobs[1][job] = { detail::finish_with_relu, &finish_data[job] };
                else
                    jobs[1][job] = { detail::finish_without_relu, &finish_data[job] };
            }
        }
    }
};


iles, homolumogap = self.smiles_list[idx], self.homolumogap_list[idx]
        graph = smiles2graph(smiles)
        assert(len(graph['edge_feat']) == graph['edge_index'].shape[1])
        assert(len(graph['node_feat']) == graph['num_nodes'])

        x = torch.from_numpy(graph['node_feat']).to(torch.int64)
        edge_index = torch.from_numpy(graph['edge_index']).to(torch.int64)
        edge_attr = torch.from_numpy(graph['edge_feat']).to(torch.int64)
        y = torch.Tensor([homolumogap])
        num_nodes = int(graph['num_nodes'])
        data = Data(x, edge_index, edge_attr, y, num_nodes=num_nodes)
        return data

    # 获取数据集划分
    def get_idx_split(self):
        split_dict = replace_numpy_with_torchtensor(torch.load(osp.join(self.root, 'pcqm4m_kddcup2021/split_dict.pt')))
        return split_dict

if __name__ == "__main__":
    dataset = MyPCQM4MDataset('dataset2')
    from torch_geometric.data import DataLoader
    from tqdm import tqdm
    dataloader = DataLoader(dataset, batch_size=256, shuffle=True, num_workers=4)
    for batch in tqdm(dataloader):
        pass

```

在生成一个该数据集类的对象时，程序首先会检查指定的文件夹下是否存在`data.csv.gz`文件，如果不在，则会执行`download`方法，这一过程是在运行`super`类的`__init__`方法中发生的。然后程序继续执行`__init__`方法的剩余部分，读取`data.csv.gz`文件，获取存储图信息的`smiles`格式的字符串，以及回归预测的目标`homolumogap`。我们将由`smiles`格式的字符串转成图的过程在`get()`方法中实现，这样我们在生成一个`DataLoader`变量时，通过指定`num_workers`可以实现并行执行生成多个图。

## 参考资料

- `Dataset`类官方文档： [`torch_geometric.data.Dataset`](https://pytorch-geometric.readthedocs.io/en/latest/modules/data.html#torch_geometric.data.InMemoryDataset)
- 将图样本封装成批（BATCHING）：[ADVANCED MINI-BATCHING](https://pytorch-geometric.readthedocs.io/en/latest/notes/batching.html)
- 分子图的量子特性回归数据集：[PCQM4M-LSC](https://ogb.stanford.edu/kddcup2021/pcqm4m/)
- [Get Started | Open Graph Benchmark (stanford.edu)](https://ogb.stanford.edu/docs/home/)

之前接触了sql基本的查询用法，接下来介绍一些相对复杂的用法。

# 3.1 视图

我们先来看一个查询语句

```sql
SELECT stu_name FROM view_students_info;
```
单从表面上看起来这个语句是和正常的从数据表中查询数据是完全相同的，但其实我们操作的是一个视图。所以从SQL的角度来说操作视图与操作表看起来是完全相同的，那么为什么还会有视图的存在呢？视图到底是什么？视图与表有什么不同呢？
## 3.1.1 什么是视图

视图是一个虚拟的表，不同于直接操作数据表，视图是依据SELECT语�


明書
        * 健康診断書（3か月以内に受診したものに限る）
        * その他、会社が提出を求めるもの
    2. 職歴のある者
        * 履歴書
        * 職務経歴書
        * 健康診断書（3か月以内に受診したものに限る）
        * その他、会社が提出を求めるもの
2. 会社は、採用内定者に対し、合格した旨、入社予定日及び内定取消事由を記載した内定通知書を交付する。
3. 第1項の書類は、不採用の場合は、直ちに本人に返還又は廃棄する。
4. 正社員以外については、選考手続きの一部を省略し、又、内定を経ずして本採用することがある。この場合においては、次条の規程は適用しない。

### 第11条　内定取消事由

1. 会社は、次の事由がある場合、採用内定者の内定を取り消し、採用しないことがある。
    1. 採用の前提となる条件が満たせなかったとき（卒業、免許の取得等）
    2. 経歴に偽りがあると認められるとき
    3. 採用選考時に告知すべき事実を秘匿していたことが判明したとき
    4. 健康状態が勤務に耐えられないと会社が判断したとき
    5. 採用内定後に、健全な社会常識に反する行為があったとき
    6. 会社の経営環境の悪化又は事業運営の見直し等が行われたとき
    7. その他前各号に準ずる、又はやむを得ない事由があるとき

### 第12条　採用時の提出書類

1. 従業員として採用された者は、入社日から3日以内に次の書類を提出しなければならない。
    * 住民票記載事項証明書
    * 基礎年金番号が記載された類（年金手帳の写し等）
    * 行政手続における特定の個人を識別するための番号の利用等に関する法律に定める個人番号（以下「マイナンバー」という。）が記載された書類（個人番号カード又は通知カードの写し、若しくはマイナンバーが記載された住民票記載事項証明書等）
    * 雇用保険被保険者証（職歴のある者に限る）
    * 前職の源泉徴収票（職歴のある者に限る）
    * 入社誓約書（正社員として採用され、かつ会社が提出を求めた場合に限る）
    * 身元保証書（正社員として採用され、かつ会社が提出を求めた場合に限る）
    * そ


ged_treebank_para_block_reader',
    'PropbankCorpusReader', 'VerbnetCorpusReader',
    'BNCCorpusReader', 'ConllCorpusReader',
    'XMLCorpusReader', 'NPSChatCorpusReader',
    'SwadeshCorpusReader', 'WordNetCorpusReader',
    'WordNetICCorpusReader', 'SwitchboardCorpusReader',
    'DependencyCorpusReader', 'NombankCorpusReader',
    'IPIPANCorpusReader', 'Pl196xCorpusReader',
    'TEICorpusView', 'KNBCorpusReader', 'ChasenCorpusReader',
    'CHILDESCorpusReader', 'AlignedCorpusReader',
    'TimitTaggedCorpusReader', 'LinThesaurusCorpusReader',
    'SemcorCorpusReader'
]


ATED_MESSAGE_FIELD_OFFSET(UserHistory_Entry, removed_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UserHistory_Entry, entry_type_),
  };
  UserHistory_Entry_reflection_ =
    new ::google::protobuf::internal::GeneratedMessageReflection(
      UserHistory_Entry_descriptor_,
      UserHistory_Entry::default_instance_,
      UserHistory_Entry_offsets_,
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UserHistory_Entry, _has_bits_[0]),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(UserHistory_Entry, _unknown_fields_),
      -1,
      ::google::protobuf::DescriptorPool::generated_pool(),
      ::google::protobuf::MessageFactory::generated_factory(),
      sizeof(UserHistory_Entry));
  UserHistory_Entry_EntryType_descriptor_ = UserHistory_Entry_descriptor_->enum_type(0);
}

namespace {

GOOGLE_PROTOBUF_DECLARE_ONCE(protobuf_AssignDescriptors_once_);
inline void protobuf_AssignDescriptorsOnce() {
  ::google::protobuf::GoogleOnceInit(&protobuf_AssignDescriptors_once_,
                 &protobuf_AssignDesc_prediction_2fuser_5fhistory_5fpredictor_2eproto);
}

void protobuf_RegisterTypes(const ::std::string&) {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
    UserHistory_descriptor_, &UserHistory::default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
    UserHistory_NextEntry_descriptor_, &UserHistory_NextEntry::default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
    UserHistory_Entry_descriptor_, &UserHistory_Entry::default_instance());
}

}  // namespace

void protobuf_ShutdownFile_prediction_2fuser_5fhistory_5fpredictor_2eproto() {
  delete UserHistory::default_instance_;
  delete UserHistory_reflection_;
  delete UserHistory_NextEntry::default_instance_;
  delete UserHistory_NextEntry_reflection_;
  delete UserHistory_Entry::default_instance_;
  delete UserHistory_Entry_reflection_;
}

void protobuf_AddDesc_prediction_2fuser_5fhistory_5fpredictor_2eproto() {
  static bool already_here = false;
  if (already_here) return;
  already_here = true;
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
    "\n\'prediction/user_history_predictor.prot"
    "o\022\033mozc.user_history_predictor\"\323\004\n\013UserH"
    "istory\022\?\n\007entries\030\006 \003(\0132..mozc.user_hist"
    "ory_predictor.UserHistory.Entry\032 \n\tNextE"
    "ntry\022\023\n\010entry_fp\030\001 \001(\r:\0010\032\340\003\n\005Entry\022\r\n\003k"
    "ey\030\001 \001(\t:\000\022\017\n\005value\030\002 \001(\t:\000\022\025\n\013descripti"
    "on\030\006 \001(\t:\000\022\032\n\017suggestion_freq\030\003 \001(\r:\0010\022\032"
    "\n\017conversion_freq\030\005 \001(\r:\0010\022\033\n\020last_acces"
    "s_time\030\004 \001(\r:\0010\022H\n\014next_entries\030\007 \003(\01322."
    "mozc.user_history_predictor.UserHistory."
    "NextEntry\022\033\n\014bigram_boost\030\024 \001(\010:\005false\022\""
    "\n\02


using ACMESharp.Util;
using System.Management.Automation;

namespace ACMESharp.POSH
{
	[Cmdlet(VerbsCommon.Set, "Vault", DefaultParameterSetName = PSET_BASE_SERVICE)]
    public class SetVault : AcmeCmdlet
	{
        public const string PSET_BASE_SERVICE = "BaseService";
        public const string PSET_BASE_URI = "BaseUri";

        [Parameter(ParameterSetName = PSET_BASE_SERVICE)]
        [ValidateSet(
                InitializeVault.WELL_KNOWN_LE,
                InitializeVault.WELL_KNOWN_LESTAGE,
                IgnoreCase = true)]
        public string BaseService
        { get; set; }

        [Parameter(ParameterSetName = PSET_BASE_URI, Mandatory = true)]
        [ValidateNotNullOrEmpty]
        public string BaseUri
        { get; set; }

        [Parameter]
        [ValidateSet("RSA256")]
        public string Signer
        { get; set; }

        /// <summary>
        /// <para type="description">
        ///     Specifies a PKI tool provider (i.e. CertificateProvider) to be used by
        ///     default in all subsequent operations against this vault.  In most cases
        ///     this can be overridden on a call-by-call basis but typically, all
        ///     PKI-related operations should be performed by a single PKI Tool provider
        ///     because of the internal workings of the provider and interdependencies
        ///     of the operations.  Such operations include private key generation,
        ///     CSR generation and certificate importing and exporting.
        ///     If left unspecified a default PKI tool provider will be used.
        /// </para>
        /// </summary>


ion obj = (UnityEngine.Animation)ToLua.ToObject(L, 1);
				string arg0 = ToLua.ToString(L, 2);
				UnityEngine.QueueMode arg1 = (UnityEngine.QueueMode)ToLua.ToObject(L, 3);
				UnityEngine.PlayMode arg2 = (UnityEngine.PlayMode)ToLua.ToObject(L, 4);
				UnityEngine.AnimationState o = obj.PlayQueued(arg0, arg1, arg2);
				ToLua.Push(L, o);
				return 1;
			}
			else
			{
				return LuaDLL.luaL_throw(L, "invalid arguments to method: UnityEngine.Animation.PlayQueued");
			}
		}
		catch(Exception e)
		{
			return LuaDLL.toluaL_exception(L, e);
		}
	}

	[MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
	static int AddClip(IntPtr L)
	{
		try
		{
			int count = LuaDLL.lua_gettop(L);

			if (count == 3 && TypeChecker.CheckTypes(L, 1, typeof(UnityEngine.Animation), typeof(UnityEngine.AnimationClip), typeof(string)))
			{
				UnityEngine.Animation obj = (UnityEngine.Animation)ToLua.ToObject(L, 1);
				UnityEngine.AnimationClip arg0 = (UnityEngine.AnimationClip)ToLua.ToObject(L, 2);
				string arg1 = ToLua.ToString(L, 3);
				obj.AddClip(arg0, arg1);
				return 0;
			}
			else if (count == 5 && TypeChecker.CheckTypes(L, 1, typeof(UnityEngine.Animation), typeof(UnityEngine.AnimationClip), typeof(string), typeof(int), typeof(int)))
			{
				UnityEngine.Animation obj = (UnityEngine.Animation)ToLua.ToObject(L, 1);
				UnityEngine.AnimationClip arg0 = (UnityEngine.AnimationClip)ToLua.ToObject(L, 2);
				string arg1 = ToLua.ToString(L, 3);
				int arg2 = (int)LuaDLL.lua_tonumber(L, 4);
				int arg3 = (int)LuaDLL.lua_tonumber(L, 5);
				obj.AddClip(arg0, arg1, arg2, arg3);
				return 0;
			}
			else if (count == 6 && TypeChecker.CheckTypes(L, 1, typeof(UnityEngine.Animation), typeof(UnityEngine.AnimationClip), typeof(string), typeof(int), typeof(int), typeof(bool)))
			{
				UnityEngine.Animation obj = (UnityEngine.Animation)ToLua.ToObject(L, 1);
				UnityEngine.AnimationClip arg0 = (UnityEngine.AnimationClip)ToLua.ToObject(L, 2);
				string arg1 = ToLua.ToString(L, 3);
				int arg2 = (int)LuaDLL.lua_tonumber(L, 4);
				int arg3 = (int)LuaDLL.lua_tonumber(L, 5);
				bool arg4 = LuaDLL.lua_toboolean(L, 6);
				obj.AddClip(arg0, arg1, arg2, arg3, arg4);
				return 0;
			}
			else
			{
				return LuaDLL.luaL_throw(L, "invalid arguments to method: UnityEngine.Animation.AddClip");
			}
		}
		catch(Exception e)
		{
			return LuaDLL.toluaL_exception(L, e);
		}
	}

	[MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
	static int RemoveClip(IntPtr L)
	{
		try
		{
			int count = LuaDLL.lua_gettop(L);

			if (count == 2 && TypeChecker.CheckTypes(L, 1, typeof(UnityEngine.Animation), typeof(string)))
			{
				UnityEngine.Animation obj = (UnityEngine.Animation)ToLua.ToObject(L, 1);
				string arg0 = ToLua.ToString(L, 2);
				obj.RemoveClip(arg0);
				return


view-delete:active,
.variables-view-edit:active,
.variables-view-open-inspector:active {
  filter: url(images/filters.svg#checked-icon-state) brightness(0.9);
}

.variable-or-property:focus > .title > .variables-view-delete,
.variable-or-property:focus > .title > .variables-view-edit,
.variable-or-property:focus > .title > .variables-view-open-inspector {
  filter: none;
}

.variables-view-delete {
  background-image: var(--delete-icon);
}

@media (min-resolution: 1.1dppx) {
  .variables-view-delete {
    background-image: var(--delete-icon-2x);
  }
}

.variables-view-edit {
  background-image: url("chrome://devtools/skin/images/vview-edit.png");
}

@media (min-resolution: 1.1dppx) {
  .variables-view-edit {
    background-image: url("chrome://devtools/skin/images/vview-edit@2x.png");
  }
}

.variables-view-open-inspector {
  background-image: url("chrome://devtools/skin/images/vview-open-inspector.png");
}

@media (min-resolution: 1.1dppx) {
  .variables-view-open-inspector {
    background-image: url("chrome://devtools/skin/images/vview-open-inspector@2x.png");
  }
}

/* Variables and properties input boxes */

.variable-or-property > .title > .separator + .element-value-input {
  margin-inline-start: -2px !important;
  margin-inline-end: 2px !important;
}

.variable-or-property > .title > .separator[hidden=true] + .element-value-input {
  margin-inline-start: 4px !important;
  margin-inline-end: 2px !important;
}

.element-name-input {
  margin-inline-start: -2px !important;
  margin-inline-end: 2px !important;
  font-weight: 600;
}

.element-value-input,
.element-name-input {
  border: 1px solid rgba(128, 128, 128, .5) !important;
  border-radius: 0;
  color: inherit;
}

/* Variables and properties searching */

.variable-or-property[unmatched] {
  border: none;
  margin: 0;
}

/* Canvas graphs */

.graph-widget-container {
  position: relative;
}

.graph-widget-canvas {
  width: 100%;
  height: 100%;
}

.graph-widget-canvas[input=hovering-background] {
  cursor: text;
}

.graph-widget-canvas[input=hovering-region] {
  cursor: pointer;
}

.graph-widget-canvas[input=hovering-selection-start-boundary],
.graph-widget-canvas[input=hovering-selection-end-boundary],
.graph-widget-canvas[input=adjusting-selection-boundary] {
  cursor: col-resize;
}

.graph-widget-canvas[input=adjusting-view-area] {
  cursor: grabbing;
}

.graph-widget-canvas[input=hovering-selection-contents] {
  cursor: grab;
}

.graph-widget-canvas[input=dragging-selection-contents] {
  cursor: grabbing;
}

/* Line graph widget */

.line-graph-widget-gutter {
  position: absolute;
  width: 10px;
  height: 100%;
  top: 0;
  left: 0;
  p


 std::vector<T>& value)
{
    size_t size = value.size();
    fwrite(&size, sizeof(size_t), 1, stream);
    fwrite(&value[0], sizeof(T), size, stream);
}

template<typename T>
void load_value(FILE* stream, T& value, size_t count = 1)
{
    size_t read_cnt = fread(&value, sizeof(value), count, stream);
    if (read_cnt != count) {
        FLANN_THROW(cv::Error::StsParseError, "Cannot read from file");
    }
}

template<typename T>
void load_value(FILE* stream, cvflann::Matrix<T>& value)
{
    size_t read_cnt = fread(&value, sizeof(value), 1, stream);
    if (read_cnt != 1) {
        FLANN_THROW(cv::Error::StsParseError, "Cannot read from file");
    }
    value.data = new T[value.rows*value.cols];
    read_cnt = fread(value.data, sizeof(T), value.rows*value.cols, stream);
    if (read_cnt != (size_t)(value.rows*value.cols)) {
        FLANN_THROW(cv::Error::StsParseError, "Cannot read from file");
    }
}

template<typename T>
void load_value(FILE* stream, std::vector<T>& value)
{
    size_t size;
    size_t read_cnt = fread(&size, sizeof(size_t), 1, stream);
    if (read_cnt!=1) {
        FLANN_THROW(cv::Error::StsError, "Cannot read from file");
    }
    value.resize(size);
    read_cnt = fread(&value[0], sizeof(T), size, stream);
    if (read_cnt != size) {
        FLANN_THROW(cv::Error::StsError, "Cannot read from file");
    }
}

}

//! @endcond

#endif /* OPENCV_FLANN_SAVING_H_ */


5f * QEKF_INS.Gyro[2] * dt;

    // 此部分设定状态转移矩阵F的左上角部分 4x4子矩阵,即0.5(Ohm-Ohm^bias)*deltaT,右下角有一个2x2单位阵已经初始化好了
    // 注意在predict步F的右上角是4x2的零矩阵,因此每次predict的时候都会调用memcpy用单位阵覆盖前一轮线性化后的矩阵
    memcpy(QEKF_INS.IMU_QuaternionEKF.F_data, IMU_QuaternionEKF_F, sizeof(IMU_QuaternionEKF_F));

    QEKF_INS.IMU_QuaternionEKF.F_data[1] = -halfgxdt;
    QEKF_INS.IMU_QuaternionEKF.F_data[2] = -halfgydt;
    QEKF_INS.IMU_QuaternionEKF.F_data[3] = -halfgzdt;

    QEKF_INS.IMU_QuaternionEKF.F_data[6] = halfgxdt;
    QEKF_INS.IMU_QuaternionEKF.F_data[8] = halfgzdt;
    QEKF_INS.IMU_QuaternionEKF.F_data[9] = -halfgydt;

    QEKF_INS.IMU_QuaternionEKF.F_data[12] = halfgydt;
    QEKF_INS.IMU_QuaternionEKF.F_data[13] = -halfgzdt;
    QEKF_INS.IMU_QuaternionEKF.F_data[15] = halfgxdt;

    QEKF_INS.IMU_QuaternionEKF.F_data[18] = halfgzdt;
    QEKF_INS.IMU_QuaternionEKF.F_data[19] = halfgydt;
    QEKF_INS.IMU_QuaternionEKF.F_data[20] = -halfgxdt;

    // accel low pass filter,加速度过一下低通滤波平滑数据,降低撞击和异常的影响
    if (QEKF_INS.UpdateCount == 0) // 如果是第一次进入,需要初始化低通滤波
    {
        QEKF_INS.Accel[0] = ax;
        QEKF_INS.Accel[1] = ay;
        QEKF_INS.Accel[2] = az;
    }
    QEKF_INS.Accel[0] = QEKF_INS.Accel[0] * QEKF_INS.accLPFcoef / (QEKF_INS.dt + QEKF_INS.accLPFcoef) + ax * QEKF_INS.dt / (QEKF_INS.dt + QEKF_INS.accLPFcoef);
    QEKF_INS.Accel[1] = QEKF_INS.Accel[1] * QEKF_INS.accLPFcoef / (QEKF_INS.dt + QEKF_INS.accLPFcoef) + ay * QEKF_INS.dt / (QEKF_INS.dt + QEKF_INS.accLPFcoef);
    QEKF_INS.Accel[2] = QEKF_INS.Accel[2] * QEKF_INS.accLPFcoef / (QEKF_INS.dt + QEKF_INS.accLPFcoef) + az * QEKF_INS.dt / (QEKF_INS.dt + QEKF_INS.accLPFcoef);

    // set z,单位化重力加速度向量
    accelInvNorm = invSqrt(QEKF_INS.Accel[0] * QEKF_INS.Accel[0] + QEKF_INS.Accel[1] * QEKF_INS.Accel[1] + QEKF_INS.Accel[2] * QEKF_INS.Accel[2]);
    for (uint8_t i = 0; i < 3; ++i)
    {
        QEKF_INS.IMU_QuaternionEKF.MeasuredVector[i] = QEKF_INS.Accel[i] * accelInvNorm; // 用加速度向量更新量测值
    }

    // get body state
    QEKF_INS.gyro_norm = 1.0f / invSqrt(QEKF_INS.Gyro[0] * QEKF_INS.Gyro[0] +
                                        QEKF_INS.Gyro[1] * QEKF_INS.Gyro[1] +
                                        QEKF_INS.Gyro[2] * QEKF_INS.Gyro[2]);
    QEKF_INS.accl_norm = 1.0f / accelInvNorm;

    // 如果角速度小于阈值且加速度处于设定范围内,认为运动稳定,加速度可以用于修正角速度
    // 稍后在最后的姿态更新部分会利用StableFlag来确定
    if (QEKF_INS.gyro_norm < 0.3f && QEKF_INS.accl_norm > 9.8f - 0.5f && QEKF_INS.accl_norm < 9.8f + 0.5f)
    {
        QEKF_INS.StableFlag = 1;
    }
    else
    {
        QEKF_INS.StableFlag = 0;
    }

    // set Q R,过程噪声和观测噪声矩阵
    QEKF_INS.IMU_QuaternionEKF.Q_data[0] = QEKF_INS.Q1 * QEKF_INS.dt;
    QEKF_INS.IMU_QuaternionEKF.Q_data[7] = QEKF_INS.Q1 * QEKF_INS.dt;
    QEKF_INS.IMU_QuaternionEKF.Q_data[14] = QEKF_INS.Q1 * QEKF_INS.dt;
    QEKF_INS.IMU_QuaternionEKF.Q_data[21] = QEKF_INS.Q1 * QEKF_INS.dt;
    QEKF_INS.IMU_QuaternionEKF.Q_data[28] = QEKF_INS.Q2 * QEKF_INS.dt;
    QEKF_INS.IMU_QuaternionEKF.Q_data[35] = QEKF_INS.Q2 * QEKF_INS.dt;
    QEKF_INS.IMU_QuaternionEKF.R_data[0] = QEKF_INS.R;
    QEKF_INS.IMU_QuaternionEKF.R_data[4] = QEKF_INS.R;
    QEKF_INS.IMU_QuaternionEKF.R_data[8] = QEKF_INS.R;

    // 调用kalman_filter.c封装好的函数,注意几个User_Funcx_f的调用
    Kalman_Filter_Update(&QEKF_INS.IMU_QuaternionEKF);

    // 获取融合后的数据,包括四元数和xy零飘值
    QEKF_INS.q[0] = QEKF_INS.IMU_QuaternionEKF.FilteredValue[0];
    QEKF_INS.q[1] = QEKF_INS.IMU_QuaternionEKF.FilteredValue[1];
    QEKF_INS.q[2] = QEKF_INS.IMU_QuaternionEKF.FilteredValue[2];
    QEKF_INS.q[3] = QEKF_INS.IMU_QuaternionEKF.FilteredValue[3];
    QEKF_INS.GyroBias[0] = QEKF_INS.IMU_QuaternionEKF.FilteredValue[4];
    QEKF_INS.GyroBias[1] = QEKF_INS.IMU_QuaternionEKF.FilteredValue[5];
    QEKF_INS.GyroBias[2] = 0; // 大部分时候z轴通天,无法观测yaw的漂移

    // 利用四元数反解欧拉角
    QEKF_INS.Yaw = atan2f(2.0f * (QEKF_INS.q[0] * QEKF_INS.q[3] + QEKF_INS.q[1] * QEKF_INS.q[2]), 2.0f * (QEKF_INS.q[0] * QEKF_INS.q[0] + QEKF_INS.q[1] * QEKF_INS.q[1]) - 1.0f) * 57.295779513f;
    QEKF_INS.Pitch = atan2f(2.0f * (QEKF_INS.q[0] * QEKF_INS.q[1] + QEKF_INS.q[2] * QEKF_INS.q[3]), 2.0f * (QEKF_INS.q[0] * QEKF_INS.q[0] + QEKF_INS.q[3] * QEKF_INS.q[3]) - 1.0f) * 57.295779513f;
    QEKF_INS.Roll = asinf(-2.0f * (QEKF_INS.q[1] * QEKF_INS.q[3] - QEKF_INS.q[0] * QEKF_INS.q[2])) * 57.295779513f;

    // get Yaw total, yaw数据可能会超过360,处理一下方便其他功能使用(如小陀螺)
    if (QEKF_INS.Yaw - QEKF_INS.YawAngleLast > 180.0f)
    {
        QEKF_INS.YawRoundCount--;
    }
    else if (QEKF_INS.Yaw - QEKF_INS.YawAngleLast < -180.0


;
}
CheckValue<IkReal> x9880 = IKatan2WithCheck(IkReal((((x9874*x9876))+((x9871*x9874)))),IkReal(((((-1.0)*x9871*x9873*x9877))+(((-1.0)*r01*x9869*x9877))+((gconst1*x9875*x9876))+((r00*x9870*x9875)))),IKFAST_ATAN2_MAGTHRESH);
if(!x9880.valid){
continue;
}
j4array[0]=((-1.5707963267949)+(((1.5707963267949)*(x9879.value)))+(x9880.value));
sj4array[0]=IKsin(j4array[0]);
cj4array[0]=IKcos(j4array[0]);
if( j4array[0] > IKPI )
{
    j4array[0]-=IK2PI;
}
else if( j4array[0] < -IKPI )
{    j4array[0]+=IK2PI;
}
j4valid[0] = true;
for(int ij4 = 0; ij4 < 1; ++ij4)
{
if( !j4valid[ij4] )
{
    continue;
}
_ij4[0] = ij4; _ij4[1] = -1;
for(int iij4 = ij4+1; iij4 < 1; ++iij4)
{
if( j4valid[iij4] && IKabs(cj4array[ij4]-cj4array[iij4]) < IKFAST_SOLUTION_THRESH && IKabs(sj4array[ij4]-sj4array[iij4]) < IKFAST_SOLUTION_THRESH )
{
    j4valid[iij4]=false; _ij4[1] = iij4; break;
}
}
j4 = j4array[ij4]; cj4 = cj4array[ij4]; sj4 = sj4array[ij4];
{
IkReal evalcond[9];
IkReal x9881=IKsin(j4);
IkReal x9882=IKcos(j4);
IkReal x9883=(cj2*sj1);
IkReal x9884=(cj1*sj2);
IkReal x9885=(gconst1*sj3);
IkReal x9886=(cj3*gconst1);
IkReal x9887=(sj1*sj2);
IkReal x9888=(cj3*gconst2);
IkReal x9889=(cj1*cj2);
IkReal x9890=(gconst2*sj3);
IkReal x9891=((1.0)*x9882);
IkReal x9892=((1.0)*x9881);
IkReal x9893=(gconst1*x9881);
IkReal x9894=(cj3*x9881);
IkReal x9895=(x9884+x9883);
IkReal x9896=(x9882*x9890);
evalcond[0]=(((r21*x9893))+(((-1.0)*gconst2*r20*x9892))+(((-1.0)*r22*x9891)));
evalcond[1]=((((-1.0)*r12*x9891))+((r11*x9893))+(((-1.0)*gconst2*r10*x9892)));
evalcond[2]=((1.0)+((r01*x9893))+(((-1.0)*gconst2*r00*x9892))+(((-1.0)*r02*x9891)));
evalcond[3]=(((r01*x9890))+((r00*x9885))+((r02*x9894))+((r01*x9882*x9886))+(((-1.0)*r00*x9888*x9891)));
evalcond[4]=(((r01*x9888))+((r00*x9896))+(((-1.0)*r01*x9885*x9891))+((r0


#!/usr/bin/python
#-*- encoding: utf-8 -*-

# This file is part of the Pameng,
# Pameng website: http://www.cnpameng.com/,
# Sina weibo: http://weibo.com/cnpameng.
#
# This file is part of WeiboMsgBackup.
#
# Copyright (C) 2013 Pameng.
# Pameng <pameng.cn@gmail.com>, 2013.
#
# WeiboMsgBackup 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, or (at your option)
# any later version.
#
# WeiboMsgBackup 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 WeiboMsgBackup; see the file COPYING3.  If not see
# <http://www.gnu.org/licenses/>.

'''
Created on 2012-2-15

@author: Zoe
for m.weibo.cn
'''
import sys
import json
import threading
import wx

from model.log4py import Log4py
from model import syscontext
from lxml.html.soupparser import fromstring
from lxml.html import tostring

logger = Log4py().getLogger('run')

class UserSearchThread(threading.Thread):

    def __init__(self, searchName, window):
        threading.Thread.__init__(self)
        self.timeToQuit = threading.Event()
        self.timeToQuit.clear()
        self.result = {}
        self.searchName = searchName
        self.window = window
        self.sina = syscontext.LOGIN_SINA_COM

    def run(self):
        try:
            wx.CallAfter(self.window.EnableMainWin, False)
            searchResult = ""
            url = "http://s.weibo.com/user/%s&Refer=SUer_box" % (self.searchName)
            #user search info page
            headers = {'Host':'s.weibo.com',
                       'User-Agent':'Mozilla/5.0 (Windows NT 6.1; rv:13.0) Gecko/20100101 Firefox/13.0.1',
                       'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
                       'Accept-Language':'zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3',
                       'Accept-Encoding':'gzip, deflate',
                       'Connection':'keep-alive',
                       'Referer':'http://s.weibo.com',
                       }
            content = self.sina.get_content_head(url, headers)
            if content == "":
                msg = u"%s failure:获取网页内容为空！" % self.id
                logger.error(msg)
                searchResult = 'error'
            if not self.getUserInfo(content):
                self.result['fg'] = 4;
                searchResult = 'failure'
            else:
                searchResult = json.dumps(self.result).decode('unicode_escape')
            #self.window.finishedCount += 1
        except Exception:
            self.result['fg'] = 13;
            searchResult = 'error'
            s=sys.exc_info()
            msg = (u"getSinaUserInfo Error %s happened on line %d" % (s[1],s[2].tb_lineno))
            logger.error(msg)
        finally:
            wx.CallAfter(self.window.EnableMainWin, True)
            wx.CallAfter(self.window.ShowSearchRes, searchResult)

    '''
    #解析用户
    '''
    def getUserInfo(self, html):
        try:
            if '搜索结果为空' in html:
                #print (u'weibo用户不存在!')
                return False
            if '您当前访问的用户状态异常' in html:
                #print (u'weibo用户状态异常!')
                return False
            html = self.getPanelInfo(html, '{\"pid\":\"pl_user_feedList\"')
            root = fromstring(html)
            user_divs = root.xpath("//div[@class='list_person clearfix']")
            if len(user_divs) > 0:
                users = []
                for div in user_divs:
                    user = {}
                    div = tostring(div , encoding='utf-8')
                    div = fromstring(div)
                    try:
                        iu_node = div.xpath("//div[@class='person_pic']/a/img")[0]
                        user['iu'] = iu_node.get("src")
                        user['sn'] = div.xpath("//div[@class='person_detail']/p[@class='person_name']")[0].text_content()
                        user['uid'] = iu_node.get("uid")

                        sx_node = div.xpath("//div[@class='person_detail']/p[@class='person_addr']/span[@class='male m_icon']")
                        sx = ''
                        if sx_node:


        if (isModDecl) flags += IS_MOD_DECL_MASK
        if (hasMacroUse) flags += HAS_MACRO_USE_MASK
        if (pathAttribute != null) flags += PATH_ATTRIBUTE_MASK
        data.writeByte(flags)

        if (pathAttribute != null) data.writeUTF(pathAttribute)
    }

    companion object : BitFlagsBuilder(Limit.BYTE) {
        private val IS_DEEPLY_ENABLED_BY_CFG_MASK: Int = nextBitMask()
        private val IS_MOD_ITEM_MASK: Int = nextBitMask()
        private val IS_MOD_DECL_MASK: Int = nextBitMask()
        private val HAS_MACRO_USE_MASK: Int = nextBitMask()
        private val PATH_ATTRIBUTE_MASK: Int = nextBitMask()
    }
}

class ImportLight(
    val usePath: Array<String>,
    val nameInScope: String,
    val visibility: VisibilityLight,
    val offsetInExpansion: Int,
    val isDeeplyEnabledByCfg: Boolean,
    val isGlob: Boolean = false,
    val isExternCrate: Boolean = false,
    val isMacroUse: Boolean = false,
    val isPrelude: Boolean = false,  // #[prelude_import]
) : Writeable {

    override fun writeTo(data: DataOutput) {
        data.writePath(usePath)
        IOUtil.writeUTF(data, nameInScope)
        visibility.writeTo(data)

        var flags = 0
        if (isDeeplyEnabledByCfg) flags += IS_DEEPLY_ENABLED_BY_CFG_MASK
        if (isGlob) flags += IS_GLOB_MASK
        if (isExternCrate) flags += IS_EXTERN_CRATE_MASK
        if (isMacroUse) flags += IS_MACRO_USE_MASK
        if (isPrelude) flags += IS_PRELUDE_MASK
        data.writeByte(flags)
    }

    companion object : BitFlagsBuilder(Limit.BYTE) {
        private val IS_DEEPLY_ENABLED_BY_CFG_MASK: Int = nextBitMask()
        private val IS_GLOB_MASK: Int = nextBitMask()
        private val IS_EXTERN_CRATE_MASK: Int = nextBitMask()
        private val IS_MACRO_USE_MASK: Int = nextBitMask()
        private val IS_PRELUDE_MASK: Int = nextBitMask()
    }
}

class MacroCallLight(
    val path: Array<String>,
    val body: String,
    val bodyHash: HashCode?,
    /** See [MacroIndex] */
    val macroIndexInParent: Int,
    /**
     * $crate::foo! { ... $crate ... }
     *                               ^ [bodyEndOffsetInExpansion]
     *              ^ [bodyStartOffsetInExpansion]
     * ^ [pathOffsetInExpansion]
     */
    val pathOffsetInExpansion: Int,
    val bodyStartOffsetInExpansion: Int,
    val bodyEndOffsetInExpansion: Int,
) : Writeable {

    override fun writeTo(data: DataOutput) {
        data.writePath(path)
        data.writeHashCodeNullable(bodyHash)
        data.writeVarInt(macroIndexInParent)
    }
}

class ProcMacroCallLight(
    val attrs: Array<AttrInfo>,
    val body: String,
    // Null `bodyHash` means that body contains `#[cfg_attr]`, hence the hash should be computed from the lowered body
    val bodyHash: HashCode?,
    val endOfAttrsOffset: Int,
    /** See [MacroIndex] */
    val macroIndexInParent: Int,
    /**
     * $crate::foo! { ... $crate ... }
     *                               ^ [bodyEndOffsetInExpansion]
     *              ^ [bodyStartOffsetInExpansion]
     * ^ [ProcMacroCallLight.AttrInfo.pathStartOffsetInExpansion]
     */
    val bodyStartOffsetInExpansion: In


: "liú,liǔ",
	0x4B21: "zhù",
	0x4B23: "xì,qì,gē",
	0x4B24: "zàn,zhān",
	0x4B25: "yì",
	0x4B26: "dòu,shè",
	0x4B27: "yuán",
	0x4B28: "jiù",
	0x4B2A: "bó",
	0x4B2B: "tí",
	0x4B2C: "yǐng",
	0x4B2E: "yí",
	0x4B2F: "nián,tiǎn",
	0x4B30: "shào",
	0x4B31: "bèn",
	0x4B32: "gōu",
	0x4B33: "bǎn",
	0x4B34: "mò",
	0x4B35: "gāi,ài",
	0x4B36: "èn",
	0x4B37: "shě",
	0x4B39: "zhì",
	0x4B3A: "yàng",
	0x4B3B: "jiàn",
	0x4B3C: "yuàn",
	0x4B3D: "shuì,duì",
	0x4B3E: "tí",
	0x4B3F: "wěi,wèi",
	0x4B40: "xùn",
	0x4B41: "zhì",
	0x4B42: "yì",
	0x4B43: "rěn,niè",
	0x4B44: "shì",
	0x4B45: "hú",
	0x4B46: "nè",
	0x4B47: "yē,yì",
	0x4B48: "jiàn",
	0x4B49: "suǐ",
	0x4B4A: "yǐng",
	0x4B4B: "bǎo",
	0x4B4C: "hú",
	0x4B4D: "hú",
	0x4B4E: "yè",
	0x4B50: "yàng",
	0x4B51: "lián,qiàn,xiàn",
	0x4B52: "xī",
	0x4B53: "èn",
	0x4B54: "duī",
	0x4B55: "zǎn,jiǎn",
	0x4B56: "zhù",
	0x4B57: "yǐng",
	0x4B58: "yǐng",
	0x4B59: "jǐn,jiàn",
	0x4B5A: "chuáng",
	0x4B5B: "dàn",
	0x4B5D: "kuài",
	0x4B5E: "yì",
	0x4B5F: "yè",
	0x4B60: "jiǎn",
	0x4B61: "èn",
	0x4B62: "níng",
	0x4B63: "cí",
	0x4B64: "qiǎn",
	0x4B65: "xuè",
	0x4B66: "bō",
	0x4B67: "mǐ",
	0x4B68: "shuì",
	0x4B69: "mó",
	0x4B6A: "liáng",
	0x4B6B: "qǐ",
	0x4B6C: "qǐ",
	0x4B6D: "shǒu",
	0x4B6E: "fú",
	0x4B6F: "bó",
	0x4


ngs?: Settings) {
        super(new LocalStorageProvider(`FUSION_SETTINGS_CACHE:${baseKey}:${user ? user.id : "global"}`, defaultSettings));
    }
}
"use strict";

import {test} from 'mocha-typescript';

export function provider (dataprovider : () => Array<Array<any>>) : Function {

  return (target : any, propertyKey : string, descriptor : PropertyDescriptor) : void => {

    let data = dataprovider();

    /**
     * The original method will be monkeypatched to be applied for each entry
     * in the providers data
     */
    let original = target[propertyKey];

    /**
     * Remove the original so that it is not invoked without arguments
     */
    delete target[propertyKey];

    /**
     * Add methods for each entry in the data from the provider.
     */
    data.forEach((item : Array<any>, index : number) => {
      let key = `${propertyKey} #${index}: ${JSON.stringify(item)}`
      target[key] = original.bind(target, ...item);
      test(key)(target, key, descriptor);
    });

  }
}
//接口

export {}  //确保跟其他示例没有成员冲突

interface Post {      //interface定义Post接口
    title:string
    content:string
}

function printPost(post:Post){
    console.log(post.title);
    console.log(post.content)
}

printPost({
    title:'hello TypeScript',
    content:'A javascript superset'
})

//接口就是用来约束对象的结构，一个对象去实现一个接口，就必须拥有这个接口中约束的所有成员
import { Node } from "./ast";
import { Sheet } from "./css-ast";

export enum DependencyContentKind {
  Node = "Node",
  Stylsheet = "Stylesheet"
}

export type BaeDependencyContent<TKind> = {
  contentKind: TKind;
};

export type DependencyNodeContent = BaeDependencyContent<
  DependencyContentKind.Node
> &
  Node;
export type DependencyStyleSheetContent = BaeDependencyContent<
  DependencyContentKind.Stylsheet
> &
  Sheet;
export type DependencyContent =
  | DependencyNodeContent
  | DependencyStyleSheetContent;
import { formatToCEP } from './../helpers/utils.helper';
import { Pipe, PipeTransform } from "@angular/core";
import { formatToCNPJ, formatToCPF } from "../helpers/utils.helper";

@Pipe ({ name: 'cep' })
export class CepPipe implements PipeTransform {
    transform(value: string | null){
        return formatToCEP(value || '');
    }
}

@Pipe ({ name: 'cpf' })
export class CpfPipe implements PipeTransform {
    transform(value: string | null){
        return formatToCPF(value || '');
    }
}
@Pipe ({ name: 'cpfoOrCnpj' })
export class CpfCnpjPipe implements PipeTransform {

    transform(value: string | null){
        const str = value || '';
        if (str.length === 11){
            return formatToCPF(str);
        } else if (str.length === 14){
            return formatToCNPJ(str);
        } else {
            return ''
        }

    }
}import { Message } from "discord.js";
import { Singleton } from "../utils/decorators";

@Singleton()
export class Responder {

    static self: Responder;

    reply = (message: Message | any, response: string) => message.reply(response);

    send = (message: Message | any, response: string) => message.channel.send(response);

    directMessage(message: Message | any, response: string, user?: string) {
        if(!user)
            message.author.send(response);
        else {
            const member = message.guild ? message.guild.members


-size:11px;font-weight:bold;height:29px;line-height:27px;margin:0 16px 0 0;min-width:72px;outline:0;padding:0 8px}.XKSfm-Sx9Kwc-c6xFrd button:hover{-moz-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1);background-color:#f8f8f8;background-image:-moz-linear-gradient(top,#f8f8f8,#f1f1f1);background-image:linear-gradient(top,#f8f8f8,#f1f1f1);border:1px solid #c6c6c6;color:#333}.XKSfm-Sx9Kwc-c6xFrd button:active{-moz-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1);background-color:#f8f8f8;background-image:-moz-linear-gradient(top,#f8f8f8,#f1f1f1);background-image:linear-gradient(top,#f8f8f8,#f1f1f1);border:1px solid #c6c6c6;color:#333;-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.XKSfm-Sx9Kwc-c6xFrd button:focus{border:1px solid #4d90fe}.XKSfm-Sx9Kwc-c6xFrd button[disabled]{-moz-box-shadow:none;box-shadow:none;background:#fff;background-image:none;border:1px solid #f3f3f3;border:1px solid rgba(0,0,0,0.05);color:#b8b8b8}.qggrzb{background:#202124;left:0;opacity:.6;pointer-events:auto;position:fixed;top:0;z-index:5}.afwRic .XKSfm-Sx9Kwc-bN97Pc,.XKSfm-Sx9Kwc-bN97Pc *{outline:none}.fuqAvf{box-sizing:border-box;overflow-y:auto;padding:24px 24px 28px}.jveIPe:after{clear:both;content:'';display:table}.jveIPe .oG5Srb{background:#fff}html.KtJU1c,.KtJU1c body{overflow:hidden;pointer-events:none}.XKSfm-Sx9Kwc{background-color:#fff;border:none;padding:0;pointer-events:auto;z-index:6}.XKSfm-Sx9Kwc-c6xFrd{margin-top:0;padding:0 16px 16px}.XKSfm-Sx9Kwc-bN97Pc{background:none}.XKSfm-Sx9Kwc-r4nke{background:none;font-size:20px;font-weight:500}.jveIPe .O0WRkf{-moz-border-radius:4px;border-radius:4px;font-family:'Google Sans',arial,sans-serif;font-size:14px;line-height:inherit;text-transform:none}.jveIPe .O0WRkf .snByac{font-weight:500}.jveIPe .oG5Srb{-moz-box-shadow:none;box-shadow:none;color:#1a73e8}.jveIPe .oG5Srb:hover{background:rgba(60,64,67,0.039)}.jveIPe .oG5Srb.u3b


t the parent clock source for this clock
 */
int clk_set_parent(struct clk *clk, struct clk *parent)
{
	/* Clock re-parenting is not supported */
	return -EINVAL;
}
EXPORT_SYMBOL(clk_set_parent);

/*
 * clk_get_parent - get the parent clock source for this clock
 */
struct clk *clk_get_parent(struct clk *clk)
{
	return clk->parent;
}
EXPORT_SYMBOL(clk_get_parent);

#define _REGISTER_CLOCK(d, n, c) \
	{ \
		.dev_id = (d), \
		.con_id = (n), \
		.clk = &(c), \
	},

static struct clk_lookup lookups[] = {
	_REGISTER_CLOCK(NULL, "osc_32KHz", osc_32KHz)
	_REGISTER_CLOCK(NULL, "osc_pll397", osc_pll397)
	_REGISTER_CLOCK(NULL, "osc_main", osc_main)
	_REGISTER_CLOCK(NULL, "sys_ck", clk_sys)
	_REGISTER_CLOCK(NULL, "arm_pll_ck", clk_armpll)
	_REGISTER_CLOCK(NULL, "ck_pll5", clk_usbpll)
	_REGISTER_CLOCK(NULL, "hclk_ck", clk_hclk)
	_REGISTER_CLOCK(NULL, "pclk_ck", clk_pclk)
	_REGISTER_CLOCK(NULL, "timer0_ck", clk_timer0)
	_REGISTER_CLOCK(NULL, "timer1_ck", clk_timer1)
	_REGISTER_CLOCK(NULL, "timer2_ck", clk_timer2)
	_REGISTER_CLOCK(NULL, "timer3_ck", clk_timer3)
	_REGISTER_CLOCK(NULL, "vfp9_ck", clk_vfp9)
	_REGISTER_CLOCK(NULL, "clk_dmac", clk_dma)
	_REGISTER_CLOCK("pnx4008-watchdog", NULL, clk_wdt)
	_REGISTER_CLOCK(NULL, "uart3_ck", clk_uart3)
	_REGISTER_CLOCK(NULL, "uart4_ck", clk_uart4)
	_REGISTER_CLOCK(NULL, "uart5_ck", clk_uart5)
	_REGISTER_CLOCK(NULL, "uart6_ck", clk_uart6)
	_REGISTER_CLOCK("pnx-i2c.0", NULL, clk_i2c0)
	_REGISTER_CLOCK("pnx-i2c.1", NULL, clk_i2c1)
	_REGISTER_CLOCK("pnx-i2c.2", NULL, clk_i2c2)
	_REGISTER_CLOCK("dev:ssp0", NULL, clk_ssp0)
	_REGISTER_CLOCK("dev:ssp1", NULL, clk_ssp1)
	_REGISTER_CLOCK("lpc32xx_keys.0", NULL, clk_kscan)
	_REGISTER_CLOCK("lpc32xx-nand.0", "nand_ck", clk_nand)
	_REGISTER_CLOCK("tbd", "i2s0_ck", clk_i2s0)
	_REGISTER_CLOCK("tbd", "i2s1_ck", clk_i2s1)
	_REGISTER_CLOCK("lpc32xx-ts", NULL, clk_tsc)
	_REGISTER_CLOCK("dev:mmc0", "MCLK", clk_mmc)
	_REGISTER_CLOCK("lpc-net.0", NULL, clk_net)
	_REGISTER_CLOCK("dev:clcd", NULL, clk_lcd)
	_REGISTER_CLOCK("lpc32xx_udc", "ck_usbd", clk_usbd)
	_REGISTER_CLOCK("lpc32xx_rtc", NULL, clk_rtc)
};

static int __init clk_init(void)
{
	int i;

	for (i = 0; i < ARRAY_SIZE(lookups); i++)
		clkdev_add(&lookups[i]);

	/*
	 * Setup muxed SYSCLK for HCLK PLL base -this selects the
	 * parent clock used for the ARM PLL and is used to derive
	 * the many system clock rates in the device.
	 */
	if (clk_is_sysclk_mainosc() != 0)
		clk_sys.parent = &osc_main;
	else
		clk_sys.parent = &osc_pll397;

	clk_sys.rate = clk_sys.parent->rate;

	/* Compute the current ARM PLL and USB PLL frequencies */
	local_update_armpll_rate();

	/* Compute HCLK and PCLK bus rates */
	clk_hclk.rate = clk_hclk.parent->rate / clk_get_hclk_div();
	clk_pclk.rate = clk_pclk.parent->rate / clk_get_pclk_div();

	/*
	 * Enable system clocks - this step is somewhat formal, as the
	 * clocks are already running, but it does get the clock data
	 * inline with the actual system state. Never disable these
	 * clocks as they will only stop if the system is going to sleep.
	 * In that case, the chip/system power management functions will
	 * handle clock gating.
	 */
	if (clk_enable(&clk_hclk) || clk_enable(&clk_pclk))
		printk(KERN_ERR "Error enabling system HCLK and PCLK\n");

	/*
	 * Timers 0 and 1 were enabled and are being used by the high
	 * resolution tick function prior to this driver being initialized.
	 * Tag them now as used.
	 */
	if (clk_enable(&clk_timer0) || clk_enable(&clk_timer1))
		printk(KERN_ERR "Error enabling timer tick clocks\n");

	return 0;
}
core_initcall(clk_init);


(stateManager.refRows[1].cells['column1']!.value, 'B');

        stateManager.insertRows(2, [createRow('C', '1', '006')]);

        expect(stateManager.refRows.length, 3);
        expect(stateManager.refRows[0].cells['column1']!.value, 'A');
        expect(stateManager.refRows[1].cells['column1']!.value, 'B');
        expect(stateManager.refRows[2].cells['column1']!.value, 'C');

        final GROUP_C = stateManager.refRows[2];
        final GROUP_C_1 = GROUP_C.type.group.children.first;
        expect(GROUP_C_1.parent, GROUP_C);
        expect(GROUP_C_1.type.group.children.first.parent, GROUP_C_1);
      });

      test('index 1 에 (C, 1, 006) 을 추가.', () {
        /// Before
        /// 0. A
        /// 1. B [V]
        /// 2.   - 1
        /// 3.     - 003
        /// 4.     - 004
        /// 5.   - 2
        /// After
        /// 0. A
        /// 1. C (1 > 006) [V]
        /// 2. B
        /// 3.   - 1
        /// 4.     - 003
        /// 5.     - 004
        /// 6.   - 2
        final GROUP_B = stateManager.refRows[1];
        final GROUP_B_1 = GROUP_B.type.group.children.first;
        stateManager.toggleExpandedRowGroup(rowGroup: GROUP_B);
        stateManager.toggleExpandedRowGroup(rowGroup: GROUP_B_1);

        expect(stateManager.refRows.length, 6);
        expect(stateManager.refRows[0].cells['column1']!.value, 'A');
        expect(stateManager.refRows[1].cells['column1']!.value, 'B');
        expect(stateManager.refRows[2].cells['column2']!.value, '1');
        expect(stateManager.refRows[3].cells['column3']!.value, '003');
        expect(stateManager.refRows[4].cells['column3']!.value, '004');
        expect(stateManager.refRows[5].cells['column2']!.value, '2');

        stateManager.insertRows(1, [createRow('C', '1', '006')]);

        expect(stateManager.refRows.length, 7);
        expect(stateManager.refRows[0].cells['column1']!.value, 'A');
        expect(stateManager.refRows[1].cells['column1']!.value, 'C');
        expect(stateManager.refRows[2].cells['column1']!.value, 'B');
        expect(stateManager.refRows[3].cells['column2']!.value, '1');
        expect(stateManager.refRows[4].cells['column3']!.value, '003');
        expect(stateManager.refRows[5].cells['column3']!.value, '004');
        expect(stateManager.refRows[6].cells['column2']!.value, '2');

        final GROUP_C = stateManager.refRows[1];
        final GROUP_C_1 = GROUP_C.type.group.children.first;
        expect(GROUP_C_1.parent, GROUP_C);
        expect(GROUP_C_1.type.group.children.first.parent, GROUP_C_1);
      });

      test('index 5 에 (C, 1, 006) 을 추가.', () {
        /// Before
        /// 0. A
        /// 1. B
        /// 2.   - 1
        /// 3.   - 2
        /// 4.     - 005
        /// 5. [V]
        /// After
        /// 0. A
        /// 1. B
        /// 2.   - 1
        /// 3.   - 2
        /// 4.     - 005
        /// 5. C [V]
        final GROUP_B = stateManager.refRows[1];
        final GROUP_B_2 = GROUP_B.type.gr


的<class>。 我會讓你繼續重塑世界的努力。然而，請允許我成為你這一傑作的一部分並揭露他就位於堤岸的附近，正在一個人行道下合適地趴著呢。"}, {"在幽暗城找到傑雷米亞·派森並查明他是否真的是傑雷米亞·費爾斯通。如果他是，那麼可能他會想要詹妮絲·費爾斯通做給他的包裹。"}},
[5050] = {"好運符咒", {"看起來我錯怪你了，<name>，為此我應向你道歉。我姐姐送給我許多東西，包括看起來很滑稽的費爾斯通農場地契，我想我一時半會是沒法收回它了。","如果我姐姐的靈魂還被束縛在農場不能安息，請你幫幫忙……你能把這個還給她嗎?這是她的半個符咒，她的丈夫拿著另外一半。","或許當她知道我拿到這些東西之後就可以安息了。"}, {"把半個好運符咒還給西瘟疫之地的詹妮絲·費爾斯通。"}},
[5051] = {"合二為一", {"這個可憐的鬼魂繼續說道:","「我好冷，約翰，把你的符咒帶給我，我們就可以在一起了!快點，約翰，在瘟疫把我們變成可惡的野獸之前!我看不到你，約翰……但是我知道你就在附近。我感覺你就在我身旁，」","或許，找到另一半的符咒並組合起來，就能組成珍妮絲·菲爾斯通的靈魂所尋找的東西。"}, {"在西瘟疫之地的費爾斯通農場的某個地方找尋另外半個好運符並組合起來。","把好運符交給西瘟疫之地費爾斯通農場的珍妮絲·菲爾斯通。"}},
[5053] = {"<UNUSED>", nil, {"Test quest to see if mail is sent to your mailbox. Just hit complete, then go check your mail.","Have a nice day."}},
[5054] = {"裂齒熊尤西烏斯", {"在冬泉谷那白雪茫茫的山脈裡，有一頭狩獵技術純熟精湛的裂齒熊，尤西烏斯。","現在我讓你去對付他，尤西烏斯就在永望鎮西邊的山坡上徘�


rn getFirebaseFirestore()
        .collection(config.usersCollectionName)
        .snapshots()
        .map(
          (snapshot) => snapshot.docs.fold<List<types.User>>(
            [],
            (previousValue, doc) {
              if (firebaseUser!.uid == doc.id) return previousValue;

              final data = doc.data();

              data['createdAt'] = data['createdAt']?.millisecondsSinceEpoch;
              data['id'] = doc.id;
              data['lastSeen'] = data['lastSeen']?.millisecondsSinceEpoch;
              data['updatedAt'] = data['updatedAt']?.millisecondsSinceEpoch;

              return [...previousValue, types.User.fromJson(data)];
            },
          ),
        );
  }
}
// This is a basic Flutter widget test.
//
// To perform an interaction with a widget in your test, use the WidgetTester
// utility that Flutter provides. For example, you can send tap and scroll
// gestures. You can also use WidgetTester to find child widgets in the widget
// tree, read text, and verify that the values of widget properties are correct.

import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';

import 'package:example/main.dart';

void main() {
  testWidgets('Counter increments smoke test', (WidgetTester tester) async {
    // Build our app and trigger a frame.
    await tester.pumpWidget(const MyApp());

    // Verify that our counter starts at 0.
    expect(find.text('0'), findsOneWidget);
    expect(find.text('1'), findsNothing);

    // Tap the '+' icon and trigger a frame.
    await tester.tap(find.byIcon(Icons.add));
    await tester.pump();

    // Verify that our counter has incremented.
    expect(find.text('0'), findsNothing);
    expect(find.text('1'), findsOneWidget);
  });
}
import 'package:flutter/material.dart';
import 'package:readhub/app/ui/main/FirstPage.dart';
import 'package:readhub/app/ui/main/SecondPage.dart';
import 'package:readhub/app/ui/main/ThirdPage.dart';
import 'package:readhub/app/widget/ReadHubDrawer.dart';

class ReadHubApp extends StatefulWidget {

  @override
  State<StatefulWidget> createState() {
    return new ReadHubAppState();
  }
}

class ReadHubAppState extends State<ReadHubApp>
    with SingleTickerProviderStateMixin {

  TabController controller;
  List<Tab> titleList = [
    new Tab(child: new Text("热门话题")),
    new Tab(child: new Text("科技动态")),
    new Tab(child: new Text("开发者资讯"))
  ];
  List<Widget>tabViewList = [
    new FirstPage(),
    new SecondPage(),
    new ThirdPage()
  ];

  @override
  void initState() {
    super.initState();
    controller = new TabController(vsync: this, length: 3);
  }

  @override
  void dispose() {
    controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {

    return new Scaffold(
      appBar: new AppBar(
        title: new Text("ReadHub"),
        bottom: new TabBar(
          tabs: titleList,
          controller: controller,

        ),
      ), drawer: new Drawer(
      child: new ReadHubDrawer(),
    ),
      body: new TabBarView(
        children: tabViewList,
        controller: controller,
      ),
    );
  }
}
import 'dart:async';
import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'package:readhub/app/ui/NewsItemView.dart';
import 'package:readhub/app/ui/main/Second


Words src, 1, carry, $fixed_skew, skew, $wk6
        SourceWord32_8_2pixels $wk1, $wk2, $wk0, first_pixel
        SourceWord32_8_2pixels $wk3, $wk4, $wk0
        Write1Word dst, 0
        MEND

        MACRO
        SourceWord32_8_64bits $src, $fixed_skew
        Read4Words src, 1, carry, $fixed_skew, skew, $wk6
        SourceWord32_8_2pixels $wk1, $wk2, $wk0, first_pixel
        SourceWord32_8_2pixels $wk3, $wk4, $wk0
        Read2Words src, 3, carry, $fixed_skew, skew, $wk6
        SourceWord32_8_2pixels $wk3, $wk4, $wk1, first_pixel
        Read2Words src, 3, carry, $fixed_skew, skew, $wk6
        SourceWord32_8_2pixels $wk3, $wk4, $wk1
        Write2Words dst, 0
        MEND

        MACRO
        SourceWord32_8_128bits_head $src, $fixed_skew, $intra_preloads
        Read4Words src, 2, carry, $fixed_skew, skew, $wk6
        SourceWord32_8_2pixels $wk2, $wk3, $wk0, first_pixel
        SourceWord32_8_2pixels $wk4, $wk5, $wk0
        Read4Words src, 2, carry, $fixed_skew, skew, $wk6
      [ "$intra_preloads" <> ""
        PreloadMiddle
      ]
        SourceWord32_8_2pixels $wk2, $wk3, $wk1, first_pixel
        SourceWord32_8_2pixels $wk4, $wk5, $wk1
        Read4Words src, 2, carry, $fixed_skew, skew, $wk6
        SourceWord32_8_2pixels $wk2, $wk3, $wk2, first_pixel
        SourceWord32_8_2pixels $wk4, $wk5, $wk2
        Read2Words src, 4, carry, $fixed_skew, skew, $wk6
        SourceWord32_8_2pixels $wk4, $wk5, $wk3, first_pixel
        Read2Words src, 4, carry, $fixed_skew, skew, $wk6
        MEND

        MACRO
        SourceWord32_8_128bits_tail $src
        SourceWord32_8_2pixels $wk4, $wk5, $wk3
        Write4Words dst, 0
        MEND

;$op     GenerateFunctions $src_bpp, $dst_w_bpp, $qualifier, $flags, $prefetch_distance,
;        $work_regs, $line_saved_regs, $leading_pixels_reg, $preload_offset_reg, $init, $newline, $cleanup

SourceWord GenerateFunctions 32, 8,, \
  FLAG_COLOUR_MAP :OR: FLAG_DST_WRITEONLY :OR: FLAG_SPILL_LINE_VARS, 3, \
  "y,stride_d,stride_s,ht_info,bitptrs,skew,orig_w,scratch,carry", \
  "x,y,stride_d,stride_s", skew,, init ;leading_pixels_reg=wk5

; ********************************************************************

        MACRO
        SourceWord8_1_1bits $src, $dst, $fixed_skew
        MOV     $src, $src, ROR #32-8
        AND     $wk7, $src, #&FF
        LDR     $wk8, [map, $wk7, LSL #2]
        AND     $wk8, $wk8, #1
        ORR     $dst, $wk8, $dst, LS