text:
NYWW @ JCC
NYWW @ NYPL
12 ST. MARK's PLACE
NYWW @ GODDARD RIVERSIDE
Pitch Conferences
Small/Independent Press Pitch Conference
Conference Leadership
First Thursdays Reading Series
Portable MFA
Books By Students
Insights & Advice
Greenpoint Press
Prison Writes
NYWW @ RED ROOM Feb 7
KGB Bar 85 East 4th Street New York, NY, 10003 United States (map)
NYWW's First Thursdays @ Red Room reading series, Thursday, Feb 7, 7:00 PM
Shayla Lawson is the author of three books of poetry—I Think I'm Ready to See Frank Ocean, A Speed Education in Human Being, and the chapbook PANTONE—and a forthcoming essay collection, published by Harper Collins, in 2020. Her work has appeared in ESPN, Guernica, Salon, This is Africa. She is a 2018 Yaddo Artist Colony Fellow, a 2017 MacDowell Colony and Oregon Literary Award Fellow, and former nonfiction editor of the Indiana Review. She currently serves as Writer-in-Residence at Amherst College and co-curates The Tenderness Project (www.tendernesses.com) with poet Ross Gay.
Jee Leong Koh's Steep Tea was named a Best Book of the Year by UK's Financial Times and a Finalist by Lambda Literary in the USA. He is the author of three other books of poems and a book of zuihitsu. His new book of essays Bite Harder: Open Letters and Close Readings blends the personal and the political in its examination of poetries from Singapore, the UK, and the USA, three countries he calls home.
Pramila Venkateswaran, poet laureate of Suffolk County, Long Island, is author of Thirtha (Yuganta Press, 2002), Behind Dark Waters (Plain View Press, 2008), Draw Me Inmost (Stockport Flats, 2009), Trace (Finishing Line Press, 2011), Thirteen Days to Let Go (Aldrich, 2015), and Slow Ripening (Local Gems, 2016). Her poems and essays have been published widely in the United States, Canada, and India in journals such as Prairie Schooner, Atlanta Review, The Writer's Chronicle, and in anthologies of literature, culture and politics. She is Professor of English at Nassau Community College (SUNY), is actively involved in giving workshops and readings across Long Island and beyond, and is the co-founder of Euterpe, the poetry venue in Emma Clark Memorial Library.
Pushcart-prize winning poet and educator Ravi Shankar has published 13 books, including most recently The Many Uses of Mint: New and Selected Poems 1997-2017 (Recent Works Press). His work has appeared in such venues as The New York Times, The Chronicle of Higher Education, The Paris Review and on the BBC, NBC, and PBS Newshour. He currently holds a fellowship from the University of Sydney.
Red Room, 85 East 4th Street, one flight above KGB Bar, btw 2nd & 3rd Avenues
--no cover, two-drink minimum--
NYWW @ Red Room: Resistance and Hope
NYWW @ Red Room: An Evening with Writers from Harlem Writers Guild


"2nd International Festival for NanoArt"
The 2nd International Festival for NanoArt organized by NanoArt21 (www.nanoart21.org) will be hosted in Stuttgart, Germany by NAHVISION Institute for International Culture Exchange, between November 1st and November 30th, 2008. The show is curated by artist/scientist Cris Orfescu (USA, Premiere Portfolio Member at absolutearts.com since 2004 and art professor Dorothea Fleiss (Germany). 18 artists from 8 countries were selected to participate with their works at this invitational event: Geert Lensens (Belgium), Hugh McGrory (Ireland), Teresa Majerus (Luxembourg), Bjoern Daempfling, Dorothea Fleiss (Germany), Han Halewijn (Netherlands), Elena Lucia Constantinescu (Romania), Teja Krasek (Slovenia), Chris Robinson, Cris Orfescu, David Derr, David Hylton, Derek Toomre, Jan Kirstein, Judith Lightfeather, Lisa Black, Siddhartha Pathak, Steven Pollard (USA).
NanoArt is the expression of the New Technological Revolution reflecting the transition from Science to Art using Technology and could be for the 21st Century what Photography was for the 20th Century. Over the past two decades the ability to measure and manipulate matter at atomic and molecular scales has led to the discovery of novel materials and phenomena. These advances underlie the multidisciplinary areas known today as Nanotechnology. The responsible development and application of Nanotechnology could lead to create jobs and economic growth, to enhance national security, and to improve the quality of life. Some of the benefits would be cleaner manufacturing processes, stronger and lighter building materials, smaller and faster computers, and more powerful ways to detect and treat disease. NanoArt is aimed to raise the public awareness of Nanotechnology and its impact�on our lives.


The Fairview Web Team is a student group that maintains and improves the Fairview Website. We strive to improve the school's technological climate through improvements and additions to the website.
Contact the leaders or email the web team if you are interested in joining us!
Also check out our Facebook page. We will post updates to the website and website status related announcements there.
We will be having our first meeting tomorrow after school at 3:30 PM, in room 424 (science computer lab). The meeting will likely take around an hour, although anyone is welcome to stay longer if they would like.
In honor of Computer Science Education Week, the Web Team will be hosting a discussion on the frontiers of computer science and technology and its impacts in society. We will be meeting Friday after school in the Science Computer Lab. Invite your friends, there will pizza.
Check the event out on Facebook.


Car Pack 06 - Sample. This sample contains one car from The Summer Velocity Car Pack: the 2010 Peugeot 308 RCZ. In-game credits required to purchase this car in Season Play. The complete Summer Velocity Car Pack contains ten cars, including: the 2010 Lotus Evora Type 124 Endurance Racecar, 2010 Mercedes-Benz SLK 55 AMG, and 2010 BMW Motorsport X6M. The complete Summer Velocity Car Pack is available for purchase.


Sandtray-Worldplay® is a transformational journey method for adults, children, adolescents, families, couples and groups. Builders create a scene using wet or dry sand, miniature objects, candles and the space of the tray to give expression to what is taking place in their internal and external worlds.
Sandtray translates personal experience into a three dimensional form. A figure or scene expresses feelings, emotions and conflicts that previously had no verbal language. The sandworlds that are created offer an opportunity to express preverbal and nonverbal experiences. Clients increase their ability to express themselves without having to depend on words. Self awareness, communication, relationships with self and others are all enhanced and increased by this process of expressing oneself through sand and miniatures.
As a process, it involves the whole person - mind, body, heart, language, intuition, soul and spirit. STWP provides a unique experience of accessing and listening to these parts of ourselves.
This experience enhances self healing, self expression, individuation, the capacity to be in relationship and to create shared visions and community with others.
The sandtray is like a "soul garden", a kind of container for the display of the client's psychic life. The sandtray is an "in between space," where the client's inner and outer life can develop and reveal itself.
The tray is that free and empty space where the client has the opportunity to create her/his own world and transform her/his existing world with fresh insight.
Below is a collection of articles that you may find interesting and useful.


I have decided that if I am going to overcome my feelings of bitterness and resentment, I need to focus on the positive things in my life rather than on the negative events of the past. I have spent a part of each day recently reading a devotion and praying (something I had gotten away from during the past few months). In my prayers I have realized how much I have to be thankful for ... my family, good friends, a home, a secure job. I have a wonderful son who has shown me recently that he truly wants me to move on with my life and be happy. I still have both of my parents and a grandmother who support me in everything I do and a granddaughter that brings laughter every time she is around. I have friends who have listened to me, cried with me, stood by me, and seen me through the toughest times in my life. I have also had some new people come into my life who have quickly become good friends with which I've been able to share happy times and make new memories. I am close to completing my specialist's degree in elementary education, and I recently received a grant that is going to equip my classroom with the newest technology for the upcoming school year. I realize that I have a very busy and hopefully happy future to look forward to.
Just as my prayers have helped me see what I have to be thankful for, the devotions I've been reading have reminded me of what I knew but had forgotten for a while ... I am not alone. I have come across devotions on anxiety, worry, stress, fear, forgiveness, hope, patience, relationships, and trusting God just when I seemed to need them the most. Today's devotion was "Believe in the light" (John 12:36), and a part of it said "I realized God had been hovering near, feeling my pain ready to embrace me with a hug. All I had to do was pay attention. All I needed to do was listen. And with Him by my side, I could pick myself up and feel my way to the light."
In an effort to "pick myself up" I've decided it's time to be open to new people, new things, and new relationships in my life. I built a wall around myself three years ago as a means of survival, and I've kept it there ever since. But regardless of how scary it may be, I no longer want to keep myself and my feelings closed off in an effort to avoid future hurt and pain. I realize now that while keeping the hurt and the pain out, I was also keeping the happiness, joy, and love out. The lyrics of a Lady Antebellum song describe perfectly how I feel now ... "Seems like I was walking in the wrong direction. I barely recognize my own reflection. Seems I've been playing on the safe side, building walls around my heart to save me ... but it's time for me to let it go ... I'm ready to feel now. No longer am I afraid of the fall down. It must be time to move on now without the fear of how it might end."
Life is about taking chances. Some of those chances may lead to mistakes and heartache, but some of them will also lead to triumphs and happiness. We cannot predict or plan how our life will turn out, and I've learned that we have to take the bad with the good. But if we never take a chance at all things will always stay the same, and we will never know what we might be missing. Choices, Chances, Changes - You must make a Choice to take a Chance or your life will never Change (author unknown).


Located in Santa Fe, Residence Inn by Marriott Santa Fe is in the business district, within a 10-minute drive of Museum of Indian Arts and Culture and Museum of International Folk Art. This hotel is 2 mi (3.2 km) from Loretto Chapel and 2.1 mi (3.3 km) from Palace of the Governors.
Make yourself at home in one of the 120 air-conditioned rooms featuring kitchens with full-sized refrigerators/freezers and stovetops. Wired and wireless Internet access is complimentary, and flat-screen televisions with cable programming provide entertainment. Conveniences include phones, as well as separate sitting areas and microwaves.
Enjoy a range of recreational amenities, including an outdoor pool, a spa tub, and a fitness center. Additional features at this hotel include complimentary wireless Internet access, gift shops/newsstands, and a television in a common area.
Grab a bite from the snack bar/deli serving guests of Residence Inn by Marriott Santa Fe. Mingle with other guests at the complimentary reception, held on select days. A complimentary hot/cold buffet breakfast is included.
Residence Inn by Marriott Santa Fe welcomes four-legged guests at their pet friendly accommodation. Up to 2 75 pound or less pets are allowed in each room. The pet fee is $100 per accommodation, per stay.


text:
package conf

import (
	"encoding/json"
	"strconv"
	"strings"

	"v2ray.com/core/app/router"
	"v2ray.com/core/common/net"
	"v2ray.com/core/common/platform/filesystem"

	"github.com/golang/protobuf/proto"
)

type RouterRulesConfig struct {
	RuleList       []json.RawMessage `json:"rules"`
	DomainStrategy string            `json:"domainStrategy"`
}

type BalancingRule struct {
	Tag       string     `json:"tag"`
	Selectors StringList `json:"selector"`
}

func (r *BalancingRule) Build() (*router.BalancingRule, error) {
	if r.Tag == "" {
		return nil, newError("empty balancer tag")
	}
	if len(r.Selectors) == 0 {
		return nil, newError("empty selector list")
	}

	return &router.BalancingRule{
		Tag:              r.Tag,
		OutboundSelector: []string(r.Selectors),
	}, nil
}

type RouterConfig struct {
	Settings       *RouterRulesConfig `json:"settings"` // Deprecated
	RuleList       []json.RawMessage  `json:"rules"`
	DomainStrategy *string            `json:"domainStrategy"`
	Balancers      []*BalancingRule   `json:"balancers"`
}

func (c *RouterConfig) getDomainStrategy() router.Config_DomainStrategy {
	ds := ""
	if c.DomainStrategy != nil {
		ds = *c.DomainStrategy
	} else if c.Settings != nil {
		ds = c.Settings.DomainStrategy
	}

	switch strings.ToLower(ds) {
	case "alwaysip":
		return router.Config_UseIp
	case "ipifnonmatch":
		return router.Config_IpIfNonMatch
	case "ipondemand":
		return router.Config_IpOnDemand
	default:
		return router.Config_AsIs
	}
}

func (c *RouterConfig) Build() (*router.Config, error) {
	config := new(router.Config)
	config.DomainStrategy = c.getDomainStrategy()

	rawRuleList := c.RuleList
	if c.Settings != nil {
		rawRuleList = append(c.RuleList, c.Settings.RuleList...)
	}
	for _, rawRule := range rawRuleList {
		rule, err := ParseRule(rawRule)
		if err != nil {
			return nil, err
		}
		config.Rule = append(config.Rule, rule)
	}
	for _, rawBalancer := range c.Balancers {
		balancer, err := rawBalancer.Build()
		if err != nil {
			return nil, err
		}
		config.BalancingRule = append(config.BalancingRule, balancer)
	}
	return config, nil
}

type RouterRule struct {
	Type        string `json:"type"`
	OutboundTag string `json:"outboundTag"`
	BalancerTag string `json:"balancerTag"`
}

func ParseIP(s string) (*router.CIDR, error) {
	var addr, mask string
	i := strings.Index(s, "/")
	if i < 0 {
		addr = s
	} else {
		addr = s[:i]
		mask = s[i+1:]
	}
	ip := net.ParseAddress(addr)
	switch ip.Family() {
	case net.AddressFamilyIPv4:
		bits := uint32(32)
		if len(mask) > 0 {
			bits64, err := strconv.ParseUint(mask, 10, 32)
			if err != nil {
				return nil, newError("invalid network mask for router: ", mask).Base(err)
			}
			bits = uint32(bits64)
		}
		if bits > 32 {
			return nil, newError("invalid network mask for router: ", bits)
		}
		return &router.CIDR{
			Ip:     []byte(ip.IP()),
			Prefix: bits,
		}, nil
	case net.AddressFamilyIPv6:
		bits := uint32(128)
		if len(mask) > 0 {
			bits64, err := strconv.ParseUint(mask, 10, 32)
			if err != nil {
				return nil, newError("invalid network mask for router: ", mask).Base(err)
			}
			bits = uint32(bits64)
		}
		if bits > 128 {
			return nil, newError("invalid network mask for router: ", bits)
		}
		return &router.CIDR{
			Ip:     []byte(ip.IP()),
			Prefix: bits,
		}, nil
	default:
		return nil, newError("unsupported address for router: ", s)
	}
}

func loadGeoIP(country string) ([]*router.CIDR, error) {
	return loadIP("geoip.dat", country)
}

func loadIP(filename, country string) ([]*router.CIDR, error) {
	geoipBytes, err := filesystem.ReadAsset(filename)
	if err != nil {
		return nil, newError("failed to open file: ", filename).Base(err)
	}
	var geoipList router.GeoIPList
	if err := proto.Unmarshal(geoipBytes, &geoipList); err != nil {
		return nil, err
	}

	for _, geoip := range geoipList.Entry {
		if geoip.CountryCode == country {
			return geoip.Cidr, nil
		}
	}

	return nil, newError("country not found: " + country)
}

func loadSite(filename, country string) ([]*router.Domain, error) {
	geositeBytes, err := filesystem.ReadAsset(filename)
	if err != nil {
		return nil, newError("failed to open file: ", filename).Base(err)
	}
	var geositeList router.GeoSiteList
	if err := proto.Unmarshal(geositeBytes, &geositeList); err != nil {
		return nil, err
	}

	for _, site := range geositeList.Entry {
		if site.CountryCode == country {
			return site.Domain, nil
		}
	}

	return nil, newError("country not found: " + country)
}

type AttributeMatcher interface {
	Match(*router.Domain) bool
}

type BooleanMatcher string

func (m BooleanMatcher) Match(domain *router.Domain) bool {
	for _, attr := range domain.Attribute {
		if attr.Key == string(m) {
			return true
		}
	}
	return false
}

type AttributeList struct {
	matcher []AttributeMatcher
}

func (al *AttributeList) Match(domain *router.Domain) bool {
	for _, matcher := range al.matcher {
		if !matcher.Match(domain) {
			return false
		}
	}
	return true
}

func (al *AttributeList) IsEmpty() bool {
	return len(al.matcher) == 0
}

func parseAttrs(attrs []string) *AttributeList {
	al := new(AttributeList)
	for _, attr := range attrs {
		lc := strings.ToLower(attr)
		al.matcher = append(al.matcher, BooleanMatcher(lc))
	}
	return al
}

func loadGeositeWithAttr(file string, siteWithAttr string) ([]*router.Domain, error) {
	parts := strings.Split(siteWithAttr, "@")
	if len(parts) == 0 {
		return nil, newError("empty site")
	}
	country := strings.ToUpper(parts[0])
	attrs := parseAttrs(parts[1:])
	domains, err := loadSite(file, country)
	if err != nil {
		return nil, err
	}

	if attrs.IsEmpty() {
		return domains, nil
	}

	filteredDomains := make([]*router.Domain, 0, len(domains))
	for _, domain := range domains {
		if attrs.Match(domain) {
			filteredDomains = append(filteredDomains, domain)
		}
	}

	return filteredDomains, nil
}

func parseDomainRule(domain string) ([]*router.Domain, error) {
	if strings.HasPrefix(domain, "geosite:") {
		country := strings.ToUpper(domain[8:])
		domains, err := loadGeositeWithAttr("geosite.dat", country)
		if err != nil {
			return nil, newError("failed to load geosite: ", country).Base(err)
		}
		return domains, nil
	}
	var isExtDatFile = 0
	{
		const prefix = "ext:"
		if strings.HasPrefix(domain, prefix) {
			isExtDatFile = len(prefix)
		}
		const prefixQualified = "ext-domain:"
		if strings.HasPrefix(domain, prefixQualified) {
			isExtDatFile = len(prefixQualified)
		}
	}
	if isExtDatFile != 0 {
		kv := strings.Split(domain[isExtDatFile:], ":")
		if len(kv) != 2 {
			return nil, newError("invalid external resource: ", domain)
		}
		filename := kv[0]
		country := kv[1]
		domains, err := loadGeositeWithAttr(filename, country)
		if err != nil {
			return nil, newError("failed to load external sites: ", country, " from ", filename).Base(err)
		}
		return domains, nil
	}

	domainRule := new(router.Domain)
	switch {
	case strings.HasPrefix(domain, "regexp:"):
		domainRule.Type = router.Domain_Regex
		domainRule.Value = domain[7:]
	case strings.HasPrefix(domain, "domain:"):
		domainRule.Type = router.Domain_Domain
		domainRule.Value = domain[7:]
	case strings.HasPrefix(domain, "full:"):
		domainRule.Type = router.Domain_Full
		domainRule.Value = domain[5:]
	case strings.HasPrefix(domain, "keyword:"):
		domainRule.Type = router.Domain_Plain
		domainRule.Value = domain[8:]
	case strings.HasPrefix(domain, "dotless:"):
		domainRule.Type = router.Domain_Regex
		switch substr := domain[8:]; {
		case substr == "":
			domainRule.Value = "^[^.]*$"
		case !strings.Contains(substr, "."):
			domainRule.Value = "^[^.]*" + substr + "[^.]*$"
		default:
			return nil, newError("Substr in dotless rule should not contain a dot: ", substr)
		}
	default:
		domainRule.Type = router.Domain_Plain
		domainRule.Value = domain
	}
	return []*router.Domain{domainRule}, nil
}

func toCidrList(ips StringList) ([]*router.GeoIP, error) {
	var geoipList []*router.GeoIP
	var customCidrs []*router.CIDR

	for _, ip := range ips {
		if strings.HasPrefix(ip, "geoip:") {
			country := ip[6:]
			geoip, err := loadGeoIP(strings.ToUpper(country))
			if err != nil {
				return nil, newError("failed to load GeoIP: ", country).Base(err)
			}

			geoipList = append(geoipList, &router.GeoIP{
				CountryCode: strings.ToUpper(country),
				Cidr:        geoip,
			})
			continue
		}
		var isExtDatFile = 0
		{
			const prefix = "ext:"
			if strings.HasPrefix(ip, prefix) {
				isExtDatFile = len(prefix)
			}
			const prefixQualified = "ext-ip:"
			if strings.HasPrefix(ip, prefixQualified) {
				isExtDatFile = len(prefixQualified)
			}
		}
		if isExtDatFile != 0 {
			kv := strings.Split(ip[isExtDatFile:], ":")
			if len(kv) != 2 {
				return nil, newError("invalid external resource: ", ip)
			}

			filename := kv[0]
			country := kv[1]
			geoip, err := loadIP(filename, strings.ToUpper(country))
			if err != nil {
				return nil, newError("failed to load IPs: ", country, " from ", filename).Base(err)
			}

			geoipList = append(geoipList, &router.GeoIP{
				CountryCode: strings.ToUpper(filename + "_" + country),
				Cidr:        geoip,
			})

			continue
		}

		ipRule, err := ParseIP(ip)
		if err != nil {
			return nil, newError("invalid IP: ", ip).Base(err)
		}
		customCidrs = append(customCidrs, ipRule)
	}

	if len(customCidrs) > 0 {
		geoipList = append(geoipList, &router.GeoIP{
			Cidr: customCidrs,
		})
	}

	return geoipList, nil
}

func parseFieldRule(msg json.RawMessage) (*router.RoutingRule, error) {
	type RawFieldRule struct {
		RouterRule
		Domain     *StringList  `json:"domain"`
		IP         *StringList  `json:"ip"`
		Port       *PortList    `json:"port"`
		Network    *NetworkList `json:"network"`
		SourceIP   *StringList  `json:"source"`
		SourcePort *PortList    `json:"sourcePort"`
		User       *StringList  `json:"user"`
		InboundTag *StringList  `json:"inboundTag"`
		Protocols  *StringList  `json:"protocol"`
		Attributes string       `json:"attrs"`
	}
	rawFieldRule := new(RawFieldRule)
	err := json.Unmarshal(msg, rawFieldRule)
	if err != nil {
		return nil, err
	}

	rule := new(router.RoutingRule)
	if len(rawFieldRule.OutboundTag) > 0 {
		rule.TargetTag = &router.RoutingRule_Tag{
			Tag: rawFieldRule.OutboundTag,
		}
	} else if len(rawFieldRule.BalancerTag) > 0 {
		rule.TargetTag = &router.RoutingRule_BalancingTag{
			BalancingTag: rawFieldRule.BalancerTag,
		}
	} else {
		return nil, newError("neither outboundTag nor balancerTag is specified in routing rule")
	}

	if rawFieldRule.Domain != nil {
		for _, domain := range *rawFieldRule.Domain {
			rules, err := parseDomainRule(domain)
			if err != nil {
				return nil, newError("failed to parse domain rule: ", domain).Base(err)
			}
			rule.Domain = append(rule.Domain, rules...)
		}
	}

	if rawFieldRule.IP != nil {
		geoipList, err := toCidrList(*rawFieldRule.IP)
		if err != nil {
			return nil, err
		}
		rule.Geoip = geoipList
	}

	if rawFieldRule.Port != nil {
		rule.PortList = rawFieldRule.Port.Build()
	}

	if rawFieldRule.Network != nil {
		rule.Networks = rawFieldRule.Network.Build()
	}

	if rawFieldRule.SourceIP != nil {
		geoipList, err := toCidrList(*rawFieldRule.SourceIP)
		if err != nil {
			return nil, err
		}
		rule.SourceGeoip = geoipList
	}

	if rawFieldRule.SourcePort != nil {
		rule.SourcePortList = rawFieldRule.SourcePort.Build()
	}

	if rawFieldRule.User != nil {
		for _, s := range *rawFieldRule.User {
			rule.UserEmail = append(rule.UserEmail, s)
		}
	}

	if rawFieldRule.InboundTag != nil {
		for _, s := range *rawFieldRule.InboundTag {
			rule.InboundTag = append(rule.InboundTag, s)
		}
	}

	if rawFieldRule.Protocols != nil {
		for _, s := range *rawFieldRule.Protocols {
			rule.Protocol = append(rule.Protocol, s)
		}
	}

	if len(rawFieldRule.Attributes) > 0 {
		rule.Attributes = rawFieldRule.Attributes
	}

	return rule, nil
}

func ParseRule(msg json.RawMessage) (*router.RoutingRule, error) {
	rawRule := new(RouterRule)
	err := json.Unmarshal(msg, rawRule)
	if err != nil {
		return nil, newError("invalid router rule").Base(err)
	}
	if rawRule.Type == "field" {
		fieldrule, err := parseFieldRule(msg)
		if err != nil {
			return nil, newError("invalid field rule").Base(err)
		}
		return fieldrule, nil
	}
	if rawRule.Type == "chinaip" {
		chinaiprule, err := parseChinaIPRule(msg)
		if err != nil {
			return nil, newError("invalid chinaip rule").Base(err)
		}
		return chinaiprule, nil
	}
	if rawRule.Type == "chinasites" {
		chinasitesrule, err := parseChinaSitesRule(msg)
		if err != nil {
			return nil, newError("invalid chinasites rule").Base(err)
		}
		return chinasitesrule, nil
	}
	return nil, newError("unknown router rule type: ", rawRule.Type)
}

func parseChinaIPRule(data []byte) (*router.RoutingRule, error) {
	rawRule := new(RouterRule)
	err := json.Unmarshal(data, rawRule)
	if err != nil {
		return nil, newError("invalid router rule").Base(err)
	}
	chinaIPs, err := loadGeoIP("CN")
	if err != nil {
		return nil, newError("failed to load geoip:cn").Base(err)
	}
	return &router.RoutingRule{
		TargetTag: &router.RoutingRule_Tag{
			Tag: rawRule.OutboundTag,
		},
		Cidr: chinaIPs,
	}, nil
}

func parseChinaSitesRule(data []byte) (*router.RoutingRule, error) {
	rawRule := new(RouterRule)
	err := json.Unmarshal(data, rawRule)
	if err != nil {
		return nil, newError("invalid router rule").Base(err).AtError()
	}
	domains, err := loadGeositeWithAttr("geosite.dat", "CN")
	if err != nil {
		return nil, newError("failed to load geosite:cn.").Base(err)
	}
	return &router.RoutingRule{
		TargetTag: &router.RoutingRule_Tag{
			Tag: rawRule.OutboundTag,
		},
		Domain: domains,
	}, nil
}

redpajama_set_name: RedPajamaGithub


text:
\section{Introduction}
As power conversion efficiencies of organic solar cells surpass 18\% \cite{lin2020,liu2020-2} it has become essential to comprehend and eradicate every mechanism contributing to efficiency reduction. Losses to the short-circuit current ($J_\text{sc}$) have been minimized by increasing charge generation and collection through the use of non-fullerene acceptors, resulting in short circuit-currents consistently above 20 mA/$\text{cm}^2$ \cite{cui2019,liu2020-2,perdigon2020,armin2021}. While open-circuit voltages ($V_\text{oc}$) have also increased in non-fullerene acceptors, the mechanisms contributing to $V_\text{oc}$ losses are not as straightforward to interpret as those contributing to the short-circuit current losses. As losses in the $V_\text{oc}$ due to radiative recombination channels are unavoidable in solar cells, the radiative limit to the $V_\text{oc}$ ($V_\text{oc}^\text{Rad}$) is considered the primary benchmark to target. Non-radiative losses to the $V_\text{oc}$ result in proportional decreases to the power conversion efficiency, making their detection and suppression a high research priority \cite{vandewal2008,vandewal2009,vandewal2010,vandewal2012,elumalai2016,baran2016,scharber2006, mihailetchi2003}. Non-radiative recombination losses can be intrinsic to the device's active layer due to the interaction of electronic states with the surrounding medium via vibrational states.
Additionally, non-radiative losses can occur at the interfaces between the active layer and the electrode (or interlayer). This non-radiative recombination channel, defined by the extraction of minority carriers out of the active layer at the `wrong' contact (i.e. electrons at the anode, holes at the cathode), is often referred to as surface recombination \cite{wagenpfahl2010,knesting2013,kirchartz2013,reinhardt2014,hacene2014,wheeler2015,zonno2016,sandberg2019,karki2020}.
As the $V_\text{oc}$ is ultimately defined by the quasi-Fermi level splitting (QFLS) of electrons and holes in the device (at open-circuit), an accurate quantification of the QFLS is key for understanding non-radiative recombination processes in photovoltaic devices.

Quasi-Fermi levels and QFLS, as introduced by Shockley, is an essential concept used to describe non-equilibrium steady-state operation of electronic semiconductors \cite{shockley1949}. This concept was expanded by W$\ddot{\text{u}}$rfel for opto-electronic processes by including a chemical potential associated with the radiative process \cite{wurfel1982}. W$\ddot{\text{u}}$rfel showed that the chemical potential of an absorbed or emitted photon ($\mu_\gamma$) is equal to the QFLS in the semiconductor. Equipped with this understanding researchers have successfully employed photoluminescence measurements to evaluate the QFLS in systems where absorption and emission are dominated by free carriers \cite{wurfel1982,braly2018,stolterfoht2019}, and subsequently applied this technique to organic semiconductors \cite{cao1999,mitschke2000,grimsdale2009}. Regrettably, photoexcitation in organic semiconductors is not dominated by free carriers but by Coulombically bound singlet excitonic states \cite{bakulin2012}. To generate free carriers excitons must diffuse to a donor-acceptor interface and form intermediary charge-transfer (CT) states, which primarily decay non-radiatively \cite{classen2020}. While CT states may be in equilibrium with free carriers, excitons are generally not and may decay radiatively before forming a CT state \cite{vandewal2008,vandewal2009,vandewal2010,vandewal2012,perdigon2020}. Therefore, traditional photoluminescence measurements (as applied to inorganic semiconductors) are not valid as a method to determine the QFLS in organic semiconductor blends since the contribution to charge generation is simultaneously over-estimated for excitons and under-estimated for CT states. These discrepancies can be circumvented by employing Rau's reciprocity principle between the charge collection of photogenerated carriers (under illumination) and the electroluminescent emission in the dark. Rau's theory assesses the non-radiative losses by providing an expression for both the radiative limit and the non-radiative losses of the open-circuit voltage of a device \cite{rau2007}. This has been successfully employed in conjunction with electroluminescent external quantum efficiency measurements to quantify the QFLS and related losses in a wide variety of semiconductor-based solar cells  \cite{green2001,kirchartz2007,kirchartz2008,kirchartz2009}. However, the corresponding $V_\text{oc}$ loss derived from this approach generally includes contributions from both intrinsic bulk-related processes and surface recombination.
In organic solar cells, the presence of surface recombination is usually correlated with electrode-induced photovoltage losses at the contacts \cite{sandberg2016,spies2017,phuong2020}, causing a mismatch between $V_\text{oc}$ and the associated QFLS in the bulk. As such, measurements based on electroluminscence cannot differentiate between intrinsic and electrode-induced photovoltage losses, leading to a consistent underestimation the QFLS in organic photovoltaic devices. A method for overcoming the difficulty in quantifying QFLS has been recently suggested using photo-induced absorption \cite{phuong2020}. However, this method requires detailed knowledge about the absorption cross-section and charge transport parameters of the device, which must necessarily be semi-transparent. A more direct quantification of the QFLS in an optimized device would serve well to complement this method and provide quantification of QFLS in devices where photo-induced absorption is not trivial.

The work described herein establishes a novel experimental approach labelled electro-modulated photoluminescence quantum efficiency, providing a pathway to measuring the intrinsic non-radiative losses occurring within the active layer of an organic solar cell at open-circuit conditions. Through the principle of reciprocity this technique quantifies the QFLS in the active layer and subsequently the electrode-induced voltage losses of a solar cell under operational conditions. Drift-diffusion simulations are employed to simulate the proposed experiment and compare to the computable QFLS. Further, PM6:Y6 (see S \Romannum{3} for a list of chemical acronyms) solar cells have been fabricated with various contacts designed to increase the non-radiative loss without modifying the QFLS in the bulk to confirm the simulated experiments. The electro-modulated photoluminescence measurements were found to successfully predict the QFLS and related losses over the range of devices used.

\section{Theoretical Background}
For a semiconductor with flat featureless quasi-Fermi levels, the emission flux ($\Phi_\text{em}$) of photons with energy $E_\gamma$ is determined by the chemical potential of radiation $\mu_\gamma$ via \cite{wurfel1982}:
\begin{equation}\label{equation:Wurfel}
\Phi_\text{em}\left(E_\gamma\right) = a\left(E_\gamma\right)\Phi_\text{bb}\left(E_\gamma\right)\left[\exp\left(\frac{\mu_\gamma}{k_\text{B}T}\right)-1\right]
\end{equation}
assuming $E_\text{G} - \mu_\gamma \gg k_\text{B}T$, where $E_\text{G}$ is the bandgap of the semiconductor, $k_\text{B}$ is the Boltzmann constant, $T$ is the temperature of the lattice, $a\left(E_\gamma\right)$ is the spectral absorbance, and $\Phi_\text{bb}\left(E_\gamma\right)$ is the spectral black-body radiation at room temperature. Using the reciprocity principle an analogous relation between the emitted radiation, photovoltaic external quantum efficiency ($\text{EQE}_\text{PV}$), and voltage ($V$) can be expressed as \cite{rau2007}:
\begin{equation}\label{equation:Rau}
\Phi_\text{em}\left(V,E_\gamma\right) = \text{EQE}_\text{PV}\left(E_\gamma\right)\Phi_\text{bb}\left(E_\gamma\right)\left[\exp\left(\frac{qV}{k_\text{B}T}\right)-1\right]
\end{equation}
where $q$ is the elementary charge. Note that the substitution of $\text{EQE}_\text{PV}$ for $a$ and $qV$ for $\mu_\gamma$ in Eq.~\ref{equation:Rau} produces Eq.~\ref{equation:Wurfel}. However, this substitution is only valid when the charge carriers in the semiconductor are in equilibrium with the emitted radiation across the device structure, satisfied when the quasi-Fermi levels are flat across the junction ($V = V_\text{oc}$) and between the electrical contacts \cite{wurfel1982}. Further, Eqs. \ref{equation:Wurfel} and/or \ref{equation:Rau} may become invalid in the presence of non-equilibrium states such as radiative trap states \cite{zarrabi2020}, non-equilibrium excitons (as discussed above), and asymmetry in the light in and out-coupling due to optical interference or Stokes shift \cite{armin2020}.

The radiative limit to the $V_\text{oc}$ can be calculated from detailed balance as \cite{rau2007}:
\begin{equation}
V_\text{oc}^\text{Rad} = \frac{k_\text{B}T}{q}\ln\left[\frac{J_\text{ph}}{J_0^\text{Rad}}+1\right]
\end{equation}
where $J_\text{ph}$ is the photocurrent generated at one-sun illumination ($J_\text{ph} = q\int_0^\infty \text{EQE}_\text{PV}\Phi_\text{sun}d E_\gamma$) and $J_0^\text{Rad}$ is the radiative dark saturation current ($J_0^\text{Rad} = q\int_0^\infty \text{EQE}_\text{PV}\Phi_\text{bb}d E_\gamma$). The true open-circuit voltage is the difference between the radiative limit and the total non-radiative losses ($\Delta V_\text{oc}^\text{NR,Total}$), defined as the sum of the intrinsic ($\Delta V_\text{oc}^\text{NR,Intrinsic}$) and electrode-induced ($\Delta V_\text{oc}^\text{NR,Electrode}$) losses:
\begin{align}
qV_\text{oc} &= qV_\text{oc}^\text{Rad} - q\Delta V_\text{oc}^\text{NR,Total}\label{equation:qVoc}
\end{align}
The QFLS in the bulk of the active layer, ideally being equal to $\mu_\gamma$, is then determined by the difference between the radiative limit and the intrinsic non-radiative losses:
\begin{align}
\text{QFLS} &= qV_\text{oc}^\text{Rad} - q\Delta V_\text{oc}^\text{NR,Intrinsic}\label{equation:QFLS}
\end{align}
In general, the non-radiative losses of the $V_\text{oc}$ can be calculated from the external quantum efficiency $\eta_\text{LED}$ of a device operated as a light emitting diode (LED), defined as the ratio of the emitted radiation to injected current ($\eta_\text{LED} = q\Phi_\text{em}/J_\text{inj}$):
\begin{align}
q\Delta V_\text{oc}^\text{NR} &= -k_BT\ln\left[\eta_\text{LED}\right]\label{equation:deltaVocNR}
\end{align}
In order to isolate the effects of intrinsic and electrode-induced non-radiative loss one must consider the experimental conditions under which $\eta_\text{LED}$ is measured as well as the relation between $\Phi_\text{em}$ and Eqs.~\ref{equation:Wurfel} and \ref{equation:Rau}. Directly probing the emission described in Eq.~\ref{equation:Wurfel} would in the ideal case allow for the quantification of the intrinsic non-radiative losses to the $V_\text{oc}$ and subsequently the QFLS.

\begin{figure*}
\includegraphics[scale=1.0]{"Figure1"}
\caption[]{(a) Electroluminescence schematic. (b) Simulated conduction ($E_\text{C}$) and valence levels ($E_\text{V}$) (solid lines), electron ($E_{\text{F}n}$) and hole ($E_{\text{F}p}$) quasi-Fermi levels (dashed lines), and QFLS under the conditions: one-sun open-circuit (blue) and dark injected current of one-sun short-circuit current (red).  (c) Electro-modulated photoluminescence schematic. (d) Simulated conduction, valence, electron and hole quasi-Fermi levels, and QFLS under the conditions: one-sun open-circuit (blue) and one-sun $V_\text{off}\pm\Delta V$ (red/green). An-anode, Cat-cathode, FG-function generator, Amp-current amplifier, OSC-oscilloscope, ND-neutral density wheel.}
\label{figure:expSetup}
\end{figure*}

\section{Experimental}

Figure \ref{figure:expSetup} shows two experimental apparatuses used to measure $\eta_\text{LED}$, the traditional electroluminescence (Figure \ref{figure:expSetup}(a)) and the alternative electro-modulated photoluminescence (Figure \ref{figure:expSetup}(c)). During electro\-luminescence measurements the device under test is held in the dark and a square-wave modulated voltage is applied to the device in forward bias by the function generator (Keysight 33500B). The current response can be measured as a square wave on the oscilloscope (Rohde \& Schwarz RTM3004) and the resulting electroluminescence is captured by a 50 mm lens, filtered with three low pass filters (Thorlabs FEL 600,550,550) (necessary to remove scattered pump light in the subsequent experiment), amplified by a silicon photoreceiver (FEMTO OE-300-Si-30), and measured with a lock-in amplifier (Stanford Research Systems SR860). The resulting external quantum efficiency ($\eta_\text{EL}$) can be calculated from the ratio of the electroluminescence intensity to the injected current at the reference frequency. This apparatus suffers from reduced geometric and spectral light collection efficiency which can be compensated for by calibrating the apparatus to an absolute measurement of $\eta_\text{EL}$ (see section S\Romannum{3}). To estimate $\eta_\text{EL}$ at a condition similar to open-circuit one-sun illumination, it is conventional to choose the injected dark current to equal the short-circuit current at one sun ($J_\text{inj}^\text{dark} = J_\text{sc}^\text{AM1.5}$). In contrast, Figure \ref{figure:expSetup}(c) shows the electro-modulated photoluminescence apparatus. Prior to performing an electro-modulated photoluminescence measurement the sample is illuminated with a laser (custom-made 520 nm diode laser) and the short circuit current ($J_\text{sc}$) is measured. To perform the electro-modulated photoluminescence quantum yield measurements the device is brought to open-circuit conditions where the applied time-dependent voltage, supplied by the function generator at angular frequency $\omega_V$, resulting injected current, measured by the oscilloscope, and emitted photoluminescence have the form:
\begin{align}
V_\text{app}(t) &= V_\text{off} + \Delta V\sin\left(\omega_V t\right)\label{equation:Vapp}\\
J_\text{inj}(t) &= \Delta J\sin\left(\omega_V t\right)\\
\Phi_\text{em}(t) &= \Phi_0 + \Delta \Phi\sin\left(\omega_V t\right)
\end{align}
where $\Delta J$ is kept smaller than $0.1J_\text{sc}$ by adjusting $\Delta V$ (see S S\Romannum{3} for details related to the size of this perturbation), and $V_\text{off}$ is set such that the mean current is zero. The resulting luminescence current amplitude ($\Delta\Phi$) is collected, amplified, and measured in the same manner as the electroluminescence measurement described above. The electro-modulated photoluminescence quantum efficiency is defined as the ratio between the luminescence intensity measured on the photodetector and the injected current amplitudes.
\begin{align}
\eta_\text{EMPL} = \frac{q\Delta \Phi}{\Delta J}
\end{align}
To evaluate $\eta_\text{EMPL}$ at conditions close to open-circuit one-sun illumination the laser power is adjusted such that the short-circuit current equals $J_\text{sc}^\text{AM1.5}$, leading $V_\text{off}$ to be approximately $V_\text{oc}^\text{AM1.5}$. As this experiment has the same spectral and geometric light collection efficiency as the electroluminescence measurement, the absolute $\eta_\text{EMPL}$ is found by multiplying by the same calibration factor.

\section{Results and Discussion}

Time-domain and steady-state drift-diffusion simulations (details in S\Romannum{1}) were employed to demonstrate the difference between electroluminescence and electro-modulated photoluminescence measurements in idealized systems before undertaking experiments. Figure \ref{figure:expSetup}(b) and (d) compare the simulated conduction, valence, electron and hole quasi-Fermi levels, and the QFLS across a device under one-sun open-circuit (blue), electroluminescence (Figure \ref{figure:expSetup}(b), red), and electro-modulated photoluminescence (Figure \ref{figure:expSetup} (d), red/green) conditions (see supplementary S\Romannum{2} for details about the electro-modulated photoluminescence simulations). Under electroluminescence conditions the conduction and valence levels, along with the quasi-Fermi levels, deviate from the one-sun open-circuit conditions as the QFLS varies across the device. In contrast, under the maximum and minimum voltages applied during electro-modulated photoluminescence the conduction and valence levels, and quasi-Fermi levels, are indistinguishable from those of one-sun open-circuit conditions. This indicates that electro-modulated photoluminescence conditions are closer to operational conditions than electroluminescence conditions. Crucially, under electro-modulated photoluminescence conditions the QFLS varies little across the device for each voltage and much less over the applied voltage range compared with the 10 meV variance in QFLS under $J_\text{inj}^\text{Dark} = J_\text{sc}^\text{AM1.5}$ conditions, seen in panel (b). The small variation in QFLS indicates that under electro-modulated photoluminescence conditions the device is very nearly in equilibrium with the emitted radiation, suggesting that the emission is described by Eq.~\ref{equation:Wurfel} and therefore can be used to quantify the QFLS. While the relatively large variation in QFLS under electroluminescence conditions indicates that the emission is dominated by the more general Eq.~\ref{equation:Rau}.

To explore the relationship between QFLS and $V_\text{oc}$ steady-state simulations of devices under open-circuit conditions were conducted. By increasing the electron injection barrier ($\phi_{n,\text{Cat}}$) at the cathode, the effect of an increased electrode-induced photovoltage loss can be simulated for organic photovoltaic devices \cite{sandberg2016,spies2017}. Figure \ref{figure:SimulationvsPhi}(a-c) show the energy levels for devices with no (a), small (b), and large (c) injection barriers. The QFLS is defined as the difference between the electron and hole quasi-Fermi levels in the bulk of the device (here taken to mean the exact center) as indicated by the green arrow, while the $V_\text{oc}$ can be determined by the difference between the electrode work functions as indicated by the black arrows \cite{sandberg2016}. As $\phi_{n,\text{Cat}}$ is increased the electron quasi-Fermi level near the cathode has to curve down in order to maintain equilibrium with the cathode work function. This leads to a considerable gradient in the electron quasi-Fermi level near the cathode ultimately reducing the $V_\text{oc}$ while the QFLS inside the bulk remains predominately unaffected. Figure \ref{figure:SimulationvsPhi}(d) summarizes these data for devices with electron injection barriers between 0 and 300 meV. In the absence of an injection barrier the QFLS and $qV_\text{oc}$ are identical, however, as the injection barrier is increased the $V_\text{oc}$ reduces while the QFLS is weakly affected. This is consistent with previous work where it was shown that $qV_\text{oc} \propto E_\text{G} - \phi_{n,\text{Cat}}$ for large enough electron injection barrier at the cathode \cite{sandberg2014,sandberg2016}. The size of the intrinsic and total non-radiative losses as well as those induced by the electrode ($\Delta V_\text{oc}^\text{NR,Electrode}$) and predicted by electroluminescence ($\Delta V_\text{oc}^{\text{NR},\eta_\text{EL}}$) are labelled for clarity.

\begin{figure*}
\includegraphics[scale=1.0]{"Figure2"}
\caption[]{Simulated (a-c) conduction ($E_\text{C}$), valence ($E_\text{V}$), electron ($E_{\text{F}n}$) and hole ($E_{\text{F}p}$) quasi-Fermi levels for devices with (a) no, (b) medium, and (c) high injection barrier. (d) Simulated injection barrier dependence of $V_\text{oc}$ (black circles), QFLS (green squares), and non-radiative losses measured by simulating electroluminescence (blue circles) and  electro-modulated photoluminescence (blue squares) experiments.}
\label{figure:SimulationvsPhi}
\end{figure*}

To uncover the relationship between the QFLS and $\eta_\text{LED}$, electroluminescence and electro-modulated photoluminescence experiments were simulated for each system. The non-radiative losses, calculated from Eq.~\ref{equation:deltaVocNR}, for both electroluminescence and electro-modulated photoluminescence are subtracted from the radiative limit; the blue curves in Figure \ref{figure:SimulationvsPhi} (d) show the results of these calculations. The predicted losses from electroluminescence, when subtracted from $V_\text{oc}^\text{Rad}$, follow $qV_\text{oc}$ for devices with low injection barrier, as expected from the reciprocity principle expressed in terms of Eq.~\ref{equation:Rau}. A discrepancy between the expected $qV_\text{oc}$ given by electroluminescence and the actual $qV_\text{oc}$ is seen for devices with large injection barrier. We note that an increased injection barrier at the cathode (reducing the number of injected electrons) generally makes the overall charge in the device uneven, which might explain the divergence from the expectations of the reciprocity principle. In contrast, the simulated losses obtained by electro-modulated photoluminescence follow the QFLS across all devices. This indicates that electro-modulated photoluminescence is probing the intrinsic losses occurring within the active layer of the device, useful for discerning material properties such as QFLS and optimizing electrodes in low-mobility systems, such as organic photovoltaic devices. While electro-luminescence is sensitive to both the intrinsic and electrode-induced non-radiative losses, useful in determining total non-radiative losses in an optimized device. Consequentially, based on this analysis, the open-circuit voltage expected from reciprocity $V_\text{oc,EL}$, and the QFLS in the bulk can be calculated from Eqs.~\ref{equation:qVoc}, \ref{equation:QFLS}, and \ref{equation:deltaVocNR} as:
\begin{align}
qV_\text{oc,EL} &= qV_\text{oc}^\text{Rad} + k_\text{B}T\ln\left[\eta_\text{EL}\right]\label{equation:qVocExpected} \text{,} \\
\text{QFLS} &= qV_\text{oc}^\text{Rad}+ k_\text{B}T\ln\left[\eta_\text{EMPL}\right]\label{equation:EQEEMQFLS} \text{.}
\end{align}

\begin{figure}
\includegraphics[scale=1.0]{"Figure3"}
\caption[]{Current density-voltage curves at one-sun illumination for devices with various cathode materials. All devices have an structure ITO/PEDOT:PSS/PM6:Y6/cathode (cathode material shown in legend), except for the pink curve where the device structure is ITO/PM6:Y6/Ag.}
\label{figure:expIV}
\end{figure}

To validate this proposal and the simulations (shown in Figure \ref{figure:SimulationvsPhi}) devices with cathode materials of different work functions were prepared to emulate the effect of varying the electron injection barrier at the cathode. Each device was made with ITO/PEDOT:PSS as the anode and a 100 nm PM6:Y6 active layer, while the cathode was varied to alter the electrode-induced non-radiative losses. Using this architecture an optimized device with power conversion efficiency of 15.3\% was created using PDINO/Ag as the cathode. Figure \ref{figure:expIV} shows the current-voltage characteristics for each device. Despite a relatively small shift in $J_\text{sc}$ and fill factor between the different devices the power conversion efficiency is reduced due to the reduction in $V_\text{oc}$, indicative of increasing electrode-induced non-radiative losses due to surface recombination (see supplemental Figure S3(a) and references \cite{sandberg2016,spies2017}). While the optimized device has a $V_\text{oc}$ of 0.847 V, the device using silver-only cathode exhibits a $V_\text{oc}$ of 0.787 V, the added interlayers (PDNIO or PFN-Br) modify the work function to create a more ohmic cathode. Figure \ref{figure:EQEData} (a-g) shows the device structures along with a sketch of the quasi-Fermi levels at open-circuit conditions. A near ohmic cathode (panels (a) and (b)) will cause the QFLS in the bulk and the $qV_\text{oc}$ to be roughly equivalent, due to the small injection barrier. Moving down from panel (a) to panel (f) the injection barrier is increased by increasing the cathode work function, causing a decrease in the $V_\text{oc}$ while the QFLS in the bulk of the active layer remains unchanged. The loss to the $V_\text{oc}$ is due to the increasing electrode-induced non-radiative loss associated with the increasing injection barrier. Figure \ref{figure:EQEData} (h-m) shows the LED external quantum efficiency measured by both electroluminescence and electro-modulated photoluminescence for each device as a function of dark injected current density or short-circuit current density respectively. As the injection barrier is increased $\eta_\text{EL}$ decreases until it is undetectable, while $\eta_\text{EMPL}$ does not substantially change. This suggests that $\eta_\text{EMPL}$ is measuring losses intrinsic to the semiconductor, while $\eta_\text{EL}$ is influenced by the structure of the device, as predicted by the simulations in Figure \ref{figure:SimulationvsPhi}. Figure \ref{figure:EQEData} (g) and (n) show the structure and external quantum efficiencies for a device without anode or cathode interlayers, severely limiting the driving force for charge extraction by creating an additional injection barrier at the anode. While  electroluminescence emission was not measurable in this case, the corresponding electro-modulated photoluminescence emission was. In this low $V_\text{oc}$ device $\eta_\text{EMPL}$ was similar to the other devices. This corroborates that electro-modulated photoluminescence measurements are insensitive to device structure and are measuring an intrinsic property of the active layer.
\begin{figure*}
\includegraphics[scale=1.0]{"Figure4"}
\caption[]{(a-g) Device structures with increasing injection barrier. (h-n) LED external quantum efficiency as measured by electroluminescence ($\eta_\text{EL}$) as a function of dark injected current (blue) and electro-modulated photoluminescence ($\eta_\text{EMPL}$) as a function of short-circuit current (red), and $J_\text{sc}^\text{AM1.5}$ (grey dashed line). PCE-power conversion efficiency, FF-fill factor. Values of device parameters and measurements are taken from the top performing pixel. Error bars are calculated from measurement errors in the oscilloscope and lock-in amplifier (see S\Romannum{3} for details).}
\label{figure:EQEData}
\end{figure*}

\begin{figure*}
\includegraphics[scale=1.0]{"Figure5"}
\caption[]{(a) QFLS measured by electro-modulated photoluminescence (blue squares) and expected $qV_\text{oc}$ as measured by $\eta_\text{EL}$ (blue circles) for PM6:Y6 systems with increasing non-radiative $V_\text{oc}$ losses. Indicated on the plot is the size of the various non-radiative losses to the $V_\text{oc}$. Upper axis lists cathode materials while lower axis lists measured $V_\text{oc}^\text{AM1.5}$. (b-d) Device structure designed to have (b) low, (c) medium, and (d) high non-radiative losses at the cathode.}
\label{figure:ExpData}
\end{figure*}

The radiative limit to the $V_\text{oc}$ is calculated by measuring the photovoltaic external quantum efficiency on the optimized device and was found to be 1.077 V (see S\Romannum{3}). The expected $V_\text{oc}$ was calculated from $\eta_\text{EL}$ at $J_\text{Inj}^\text{Dark} = J_\text{sc}^\text{AM1.5}$ in accordance with Eq.~\ref{equation:qVocExpected}, and the QFLS is calculated from $\eta_\text{EMPL}$ at $J_\text{sc} = J_\text{sc}^\text{AM1.5}$ in accordance with Eq.~\ref{equation:EQEEMQFLS}. Figure \ref{figure:ExpData} (a) shows the QFLS, the expected $qV_\text{oc}$, and the measured $qV_\text{oc}$ at one-sun conditions for devices with increasing non-radiative losses. The black arrows indicate the magnitude of the various non-radiative losses as a guide for the eye. Figure \ref{figure:ExpData} (b-d) show examples of device structures with small (b), medium (c), and large (d)  injection barriers as a guide. The expected $qV_\text{oc}$ based on the measured electroluminescence follows the actual $qV_\text{oc}$ for devices with negligible injection barriers and occupy the region between the QFLS and $qV_\text{oc}$ for devices with impractical injection barriers, as predicted by the simulations in Figure \ref{figure:SimulationvsPhi}. The calculated QFLS is constant throughout all devices as expected, demonstrating the  precision of the method, and consistent with a previous study on the same material system using photo-induced absorption, further exemplifying the accuracy \cite{phuong2020}.

The inset of Figure \ref{figure:ExpData} (a) enhances the devices with lowest non-radiative losses. In the PDINO/Ag device ($V_\text{oc} = 0.847 $V) the QFLS is $853\pm 5$ meV, while the electrode-induced losses are not obvious due to the experimental uncertainty. However, in the PFN-Br device ($V_\text{oc} = 0.849$ V) the QFLS is $859\pm 4$ meV while the electrode-induced losses account for a reduction in the $V_\text{oc}$ of $10\pm 4$ meV. Improvements to the resolution will allow for discrepancies in the QFLS and the total non-radiative losses in an optimized cell to be distinguished, together quantifying the electrode-induced losses. This can be achieved by closely monitoring the temperature of the sample (accounting for about 3 meV of error) and decreasing the measurement error in the lock-in amplifier or the oscilloscope (accounting for about 1 meV of error each).

\section{Conclusions}
In conclusion, electro-modulated photoluminescence quantum yield was introduced as an approach to quantify the quasi-Fermi level splitting in the bulk of organic photovoltaic devices under operational conditions. Simulated electro-modulated photoluminescence measurements were compared to traditional electroluminescence measurements, used to quantify the total non-radiative losses. It was shown that electroluminescence predicted the total non-radiative loss when the cathode is sufficiently ohmic, and varies substantially when it is not, while electro-modulated photoluminescence accurately predicted the QFLS in the bulk of devices with both ohmic and non-ohmic cathodes. PM6:Y6 based devices were fabricated with various cathodes and both electro-modulated photoluminescence and electroluminescence measurements were performed. The experiments showed that with an increasingly non-ohmic cathode $\eta_\text{EL}$ decreased dramatically while $\eta_\text{EMPL}$ was unaffected, confirming the simulations. This showed that in the case of low-mobility systems, such as organic photovoltaic devices, $\eta_\text{EMPL}$ (along with the $V_\text{oc}$) fully characterizes different contributions of the non-radiative losses to the open-circuit voltage, providing a pathway to quantify the QFLS. It was found that in a high $V_\text{oc}$ optimized solar cell the QFLS was $859\pm 4$ meV, leading to the conclusion that the electrode-induced losses accounted for $10\pm 4$ mV of the total photovoltage loss. This approach was the first direct measurement of QFLS within organic solar cells and will contribute to the continual improvement of solar cell and light-emitting diode performance by allowing one to distinguish between intrinsic and electrode-induced losses to the open-circuit voltage.

\begin{acknowledgments}
This work was supported by the S\^er Cymru \Romannum{2} through the European Regional Development Fund, Welsh European Funding Office, and Swansea University strategic initiative in Sustainable Advanced Materials. A.A. is a S\^er Cymru II Rising Star Fellow and P.M. is a S\^er Cymru II National Research Chair. This work was also funded by UKRI through the EPSRC Program Grant EP/T028511/1 Application Targeted Integrated Photovoltaics. Drew B. Riley acknowledges the support of the Natural Sciences and Engineering Research Council of Canada (NSERC), [PGSD3-545694-2020]. Ronald \"Osterbacka and Nora M. Wilson would like to acknowledge support from Svenska tekniska vetenskapsakademien i Finland and The Society of Swedish Literature in Finland.
\end{acknowledgments}

\clearpage

redpajama_set_name: RedPajamaArXiv


text:
Q: customize action of a default button of tinymce I am trying to customize the default action of forecolor (text color change) button.By default it add a span tag with inline css.But I want to add the inline css to its parent element also.Is there any way to customize default action of a button.For more information, I am using inline editor.

A: I hope this ans Helpful
You can uses style_formats Option Tiny Editor
tinyMCE.init({
    mode : "exact",
    autosave_ask_before_unload: false,
    language : 'de',
    theme : "advanced",
    width : 930,
    height:210,
    custom_shortcuts : false,
    theme_advanced_buttons1 : "fontselect,fontsizeselect,weddixsignaturebutton,styleselect,|,charmap,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,copy,paste,|,bullist,numlist,|,undo,redo,code",
    theme_advanced_buttons2 : "weddixsymbolbutton,weddixhochzeitspoesietextblock,weddixdresscodetextblock,weddixgeldgeschenketextblock,weddixtextblock,weddixdanksagungtextblock",
//  theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen,|,link,unlink,|,code,preview",
//  theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak,restoredraft",
    theme_advanced_toolbar_location : "top",
    theme_advanced_toolbar_align : "left",
    theme_advanced_statusbar_location : "bottom",
    theme_advanced_resizing : false,
    theme_advanced_font_sizes: "10pt,12pt,13pt,14pt,16pt,18pt,20pt,22pt,24pt,28pt,30pt,34pt,36pt,38pt,40pt,50pt,60pt",
    style_formats: [
                     {title : 'Braun', inline : 'span', styles: {color: '#674708'}},
                     {title : 'Hellbraun', inline : 'span', styles: {color: '#a78e5e'}},
                     {title : 'Dunkelbraun', inline : 'span',styles: {color: '#4c4029'}},
                     {title : 'Grün', inline : 'span', styles: {color: '#218d47'}},
                     {title : 'Dunkelgrün', inline : 'span', styles: {color: '#3a7751'}},
                     {title : 'Apfelgrün', inline : 'span', styles: {color: '#9bbb0c'}},

                     {title : 'Olivgrün', inline : 'span', styles: {color: '#596539'}},
                     {title : 'Grau', inline : 'span', styles: {color: '#919194'}},
                     {title : 'Dunkelgrau', inline : 'span',styles: {color: '#515154'}},
                     {title : 'Schwarz', inline : 'span', styles: {color: '#000000'}},
                     {title : 'Orange', inline : 'span', styles: {color: '#e58e11'}},

                     {title : 'Rot', inline : 'span', styles: {color: '#d40606'}},
                     {title : 'Dunkelrot', inline : 'span', styles: {color: '#880606'}},
                     {title : 'Pink', inline : 'span',styles: {color: '#e40477'}},
                     {title : 'Rosa', inline : 'span', styles: {color: '#c47781'}},
                     {title : 'Altrosa', inline : 'span', styles: {color: '#eeb2ba'}},

                     {title : 'Mint', inline : 'span', styles: {color: '#a1d7ca'}},
                     {title : 'Türkis', inline : 'span', styles: {color: '#116e68'}},
                     {title : 'Hellblau', inline : 'span', styles: {color: '#56cae7'}},
                     {title : 'Blau', inline : 'span', styles: {color: '#0082ac'}},
                     {title : 'Dunkelblau', inline : 'span', styles: {color: '#00008b'}},
                     {title : 'Lila', inline : 'span', styles: {color: '#56009f'}},
                     {title : 'Flieder', inline : 'span', styles: {color: '#af8dcb'}}

                     ]
});
</script>

redpajama_set_name: RedPajamaStackExchange


text:
Stool Microbes Predict Advanced Liver Disease
Proof-of-concept study suggests a noninvasive test for specific microbial population patterns could be used to detect advanced nonalcoholic fatty liver disease
27-Apr-2017 10:05 AM EDT
University of California San Diego Health
Credit: Photo courtesy of Arraya href="https://www.flickr.com/photos/micronerdbox/Array target=Array_blankArrayArrayVeeDunn/flickrArray/aArray
E. coli (shown here growing on an agar plate) are three-fold more common in advanced NAFLD patients than early stage patients, according to a study by researchers at UC San Diego School of Medicine and J. Craig Venter Institute.
Biotech, Cell Biology, Diabetes, Microbiome, Obesity, Pharmaceuticals, Cell (journal), Local - California, All Journal News
Nafld, Liver, Hepatology, Microbiome, Liver Disease, Bacteriology, Biotechnology, Microbiology, Obesity, Mebolic Disease, Diabetes, Pharmaceutical Science
Newswise — Nonalcoholic fatty liver disease (NAFLD) — a condition that can lead to liver cirrhosis and cancer — isn't typically detected until it's well advanced. Even then, diagnosis requires an invasive liver biopsy. To detect NAFLD earlier and more easily, researchers in the NAFLD Research Center (http://nafld.ucsd.edu/) at University of California San Diego School of Medicine, Human Longevity, Inc. and the J. Craig Venter Institute report that the unique microbial makeup of a patient's stool sample — or gut microbiome — can be used to predict advanced NAFLD with 88 to 94 percent accuracy.
The proof-of-concept study, which involved 135 participants, is published May 2 in Cell Metabolism.
"We estimate that as many as 100 million adults and children in the U.S. may have NAFLD. Determining exactly who has or is at risk for the disease is a critical unmet medical need," said first author Rohit Loomba, MD, professor of medicine in the Division of Gastroenterology, director of the NAFLD Research Center and a faculty member in the Center for Microbiome Innovation at UC San Diego. "There are about 50 new NAFLD drugs in the pipeline, including about five that will likely be approved for use in the next two years. If we are better able to diagnose this condition, we will be better at enrolling the right types of patients in these trials, and ultimately will be better equipped to prevent and treat it."
The precise cause of NAFLD is unknown, but diet and genetics play substantial roles. Up to 50 percent of obese people are believed to have NAFLD. As mounting evidence continues to suggest that the makeup of a person's gut microbiome may influence his or her risk for obesity, Loomba and team began to wonder if the gut microbiome might also be linked to obesity-associated liver disease. If so, they hypothesized that a stool-based "read-out" of what's living in a person's gut might provide insight into his or her NAFLD status.
To answer these questions, Loomba and team examined two different patient groups. The first group included 86 patients with NAFLD, as diagnosed by biopsy. Of these, 72 had mild/moderate NAFLD and 14 had advanced disease. Collaborators at Human Longevity, Inc. sequenced the microbial genes extracted from each participant's stool sample and used that information to determine which species were living where, and the relative abundance of each. The researchers found 37 bacterial species that distinguished mild/moderate NAFLD from advanced disease, allowing them to predict which patients had advanced disease with 93.6 percent accuracy.
The team validated this finding with a second study group that included 16 patients with advanced NAFLD and 33 healthy people as controls. In this case, they found nine bacterial species whose relative numbers allowed them to distinguish NAFLD patients from the healthy volunteers, with 88 percent accuracy. Seven of these bacterial species overlapped with the signature 37 used in the previous group.
There are four main types of bacteria found in the human gut: Firmicutes, Proteobacteria, Bacteroidetes and Actinobacteria. Loomba and team found that patients with advanced NAFLD tend to have more Proteobacteria and fewer Firmicutes in their stool than those with early stage NAFLD. At the species level, one major difference the researchers found was in the abundance of E. coli — these bacteria were three-fold more common in advanced NAFLD patients than early stage patients.
"We believe our study sets the stage for a potential stool-based test to detect advanced liver fibrosis based simply on microbial patterns," said senior author Karen E. Nelson, PhD, president of the J. Craig Venter Institute, "or at least help us minimize the number of patients who have to undergo liver biopsies."
While Loomba estimates that a stool-based microbiome diagnostic might cost $1,500 if it were on the market today, he predicts that cost will lower to less than $400 in the next five years due to advances in genomic sequencing and analysis technologies.
While excited, the researchers caution that so far this new diagnostic approach has only been tested in a relatively small patient group at a single, highly specialized medical center. The team is now applying for grant funding to expand their study in a larger cohort across multiple sites. Even if successful, a stool-based test for NAFLD wouldn't be available to patients for at least five years, they said. Loomba also points out that while a distinct set of microbial species may be associated with advanced NAFLD, this study does not suggest that the presence or absence of these microbes causes NAFLD or vice versa.
"We are looking forward to further studies to assess the role, if any, these microbial species play in gut permeability, liver inflammation and cross-talk with other factors to induce liver injury, and ultimately influence disease progression in NAFLD," said study co-author David A. Brenner, MD, vice chancellor of UC San Diego Health Sciences and dean of UC San Diego School of Medicine.
"Understanding the microbiome, just as sequencing the human genome, is one part of the puzzle on human health and disease," said study co-author J. Craig Venter, PhD, co-founder and executive chairman of Human Longevity, Inc. "New technologies, such as machine learning, are allowing for tremendous advances to interpret these data."
Co-authors of this study include: Victor Seguritan, Tao Long, Niels Klitgord, Marcus B. Jones, William Biggs, Human Longevity, Inc.; Weizhong Li, Shibu Yooseph, Human Longevity, Inc. and J. Craig Venter Institute; Archana Bhatt, Parambir Singh Dulai, Richele Bettencourt, Cyrielle Caussy, Claude B. Sirlin, Bernd Schnabl, Chi-Hua Chen, UC San Diego; Sarah K. Highlander, Lauren Brinkac, and Nicholas Schork, J. Craig Venter Institute.
This research was funded, in part, by the National Institutes of Health (5T32DK007202, K23DK090303, R01DK106419, P42ES010337), American Gastroenterological Association Foundation, T. Franklin Williams Scholarship Award, Atlantic Philanthropies, Inc., John A. Hartford Foundation, OM and Association of Specialty Professors.

redpajama_set_name: RedPajamaCommonCrawl


text:
Tupi felt strange. He was looking at himself lying on the hospital bed -- alone. There were doctors, nurses checking on him from time to time, but no one came to visit. "I guess, in the end, my existence did not matter to anyone." Tupi said.
Tupi watch himself with tubes coming out of his nose and mouth and nurses coming to feed him from time to time using the tubes. Soon, it was morning again, and still no one visited. Tupi can feel himself drifting further away from his body. "I guess this is the end. Working hard my whole life for that HDB flat, and no one remembers me. I think my Eulogy would read - Loner to the end, failing to help, and helping to fail."
Tupi was about to turn and leave, but he saw Suzie coming into his room and sitting beside him. "Tupi, please wake up. I felt really lonely when you left the house to live on your own. I miss you and I did not have a chance to tell you as you were travelling and did not give me new your non-office phone number." She choked a little and cried clutching her Mickey Mouse necklace. "You were the best brother to me and... and you protected me and taught me many things when I was young."
"You bought me this necklace in Tokyo Disneyland when I was 14, and wear this everyday. When we had a fall on your motorcycle, which I got this scar, you never forgave yourself and sold the motorcycle and never rode again. But it was my fault for leaning the wrong way in a corner. The last time I saw you happy was with that bike." Suzie said holding Tupi's hand tight. "After that, you started working and even when we live in the same house, I don't really have a chance to meet you except during New Years and Christmas. You work late everyday and get home tired and sleep all weekend, then you moved out a few months ago. Mary was angry at first as she thought you would be still in the house taking care of me. I did not want you to move, but you seemed finally happy again with your own place. Please don't leave me...."
Tupi paused. He did not realize that his sister cared so much about him. He approached her and tried to touch her but his hands passed through her. "I'm a bad brother, I have never been there, not even for your graduation because I was in the army. Then I focused too much on work. I wanted to give you more space as we live in such a small HDB flat, so I was determined to move out to give you space." Tupi said. "I am too selfish. Even when I was jobless, I wanted to explore more and did not think about catching up with you and Mary. I just wanted to make an impact on someone... anyone, as my life has been insignificant and no one would remember me, but now I know that you cared... I need to find a 1-up or restore from a save point. Please let me try again. I will make it up to you."
Tupi woke up in a hospital bed. He opened his eyes slowly and his vision was still blurry with a bit of red. He was very uncomfortable with tubes in his nose and mouth. He can feel a throbbing pain on the side of his head and ringing in his ears. "My head hurts... so much." Tupi mumbled and as his vision slowly gets into focus, he realized that he was in an empty room.
Tupi felt slightly nauseous and really tired. tears rolled down his face as he had a sudden feeling of loneliness again. "I guess this is level 10." Tupi thought to himself and could not control the tears rolling down his cheeks. "Oh.. god, this hurts more..." Tupi muttered as his tears entered his bandages and went over some abrasions.
Tupi closed his eyes and waited for the pain to end.
Tupi heard more voices in his room. He slowly opened his eyes and saw Michael. "Hey! You are awake!" Michael shouted excitedly and ran out of the room. Minutes later, Tupi's sisters came in along with many of his other friends he met while he was volunteering.
"Tupi!" Suzie cried. "Don't leave me!"
Tupi felt something warm inside. He felt loved and glad that he had many friends and family concerned about him.
"Here are some information about you on the News." Michael said. "Singaporean survived hurricane in Florida only to hit by a car in Singapore... Seems like your friend Justin was interviewed and he had some photos of you, and local news was about to publish it and soon after, you were hit by that car mirror. It was a hit and run, some people posted the accident, it became viral, and when your story broke, suddenly there are a lot of well wishers. The whole room next door is filled with flowers from well wishers. They also caught the driver."
Tupi was happy, he wanted to respond but started choking from some liquid entering his throat getting into his airway.
"Doctor!" Suzie shouted and the nurses rushed in to check on Tupi. The nurse shined a flashlight into Tupi's eyes.
"He's ok." The nurse said. I will remove the tubes now, since he is awake. Can all of you please leave for a while, I need to work here."
Tupi made a full recovery. His skull was fractured by a car mirror and went into a coma for 3 days from the impact, but nothing was seriously damaged inside. Tupi was observed in the hospital for 2 more days and many people including numerous strangers came to visit.
Tupi was really touched as he felt appreciated. "I am not alone."
Posted by Iron Bowl at 8:16 AM No comments:
Tupi felt insignificant. He was confused. Can change be driven by one person alone? Do people care about making social impact or more about themselves?
Tupi was in his apartment alone. He looked at some of the photos of himself as he unpacked and he had friends in school, but after he started work, he felt more alone than ever. He did not have much of a social life and did not do anything much besides work.
Tupi checked his emails and for the few weeks he was traveling, he did not receive any emails from any friend or family – just lots of spam emails. Tupi went onto Facebook. There were no new messages or anyone commenting on his posts. (http://www.visiontimes.com/2014/10/21/10-levels-of-loneliness-which-one-are-you-at-now-photos.html) He checked out a meme on Level of loneliness and shook his head. "Wow, I moved into this apartment by myself, and I have no one who I think would help me move." Tupi said. "That's level 9/10 loneliness. I wonder if anyone really cared about me, or if I would die alone?"
Tupi check the other rooms in his apartment and still found several boxes that were still packed up in boxes. He found some undeveloped film from his camera and made a list of things to do.
1) Build shelves.
2) Buy new 2m long shower hose.
3) Get nice comfy chair.
4) Need a bucket and mop.
Looking at his list, Tupi went online to check for the items and decided to take a trip to Ikea and make some stops along the way for the other items which cannot be found in Ikea.
Tupi plotted out his trip route and efficiently went about his purchase. He would systematically go to the store he picked, make his purchase, take the shortest route to the next store and move on.
Tupi was quite pleased with his progress. As he was waiting at the sidewalk, he crossed out some of the items he bought on his list and saw an e-scooter speeding by and stepped away from the path of the e-scooter, unfortunately, he was too close to the road and as a car was passing by, the mirror his Tupi on the head and everything went black.
When Tupi was going home, he kept thinking about whether he prevented Michael from helping to build another bridge. "Helping is hard... Not helping is also hard." Tupi muttered and was troubled. "I thought that taking a few months to do volunteer work would make me learn more, but instead it made me more confused."
When Tupi reached home, he made some tea and took out a book and read a chapter. Then he started thinking about the bridge again. "They never asked for a bridge, it seemed like Michael wanted to build it because he had been building bridges for other communities around the world. So when the bridge did not get completed, why am I so worried about it? Is it because I sort of donated money and wanted it to be completed, even though my life is not affected by its completion? Should I donate more money to get it done, but what if it still does not get done? Isn't this how scams work?"
Tupi picked up the phone and called Alex (In Haiti). "Hey Alex... I've a question for you. I've donated money to build a bridge, and it has not been built because they needed more money as they did not budget for things, but after several rounds of more donations, it still did not get done... Should I donate one last time?"
"People in third world country are not incompetent. They can budget. If they fail to budget once, it may be because it was their first time, and they will be careful after. If they fail many times, it may be because they think you are a sucker and they are just milking you for money. Please don't encourage such behaviors." Alex said.
"Thank you... " Tupi said and he felt a lot better. "I guess I did learn something..."
Tupi went on the job portal and looked at the job postings. He typed in "Social Impact" and there was no job listing on anything social except "Social Media".
"Well, I guess no one will pay you to do good. It seems like you have to pay to do good..." Tupi said. "The world is really weird that way."
Posted by Iron Bowl at 11:41 PM 1 comment:
Tupi met up with Michael to have dinner. Chomp Chomp was very crowded as usual and it took them sometime before they got a seat and their food, but the food was good.
"So have you found a job yet?' Michael asked. "Any good offers?"
"Applied for some and did not get any response." Tupi said. "Did not try that hard though, still want to understand more about myself."
"Wah, so rich ah..." Michael said. "Don't work also can travel? And pay for your new HDB flat?"
"I've been saving for the past 30 years for the house." Tupi said. "Finally bought it with all my savings. After that, my expenses are actually pretty low. I'm also renting out a room."
"Ok, anyway, I have some bad news." Michael said. "Remember the bridge we fundraised for Nepal a long time ago?"
"Ya?" Tupi asked. "What's wrong with it?"
"They have not built it. We sent the money and they hired the contractor and engineers and bought the materials." Michael said. "Then we did another round of fundraising for transportation."
"Yup, remembered that." Tupi said.
"Then they discovered that they needed more materials months later..." Michael said. "And we fundraised again and bought the materials and actually went there with the truck for delivery."
"Uh-huh." Tupi nodded."
"The bridge is still not completed yet." Michael said. "We paid for the permits, and submission, and it got approved months later again, but now, they claim that the monsoon washed away the sand and some of the cement bought was damaged in storage."
"This is ridiculous, don't they need to walk like 10km instead of 1km to the bus stop if the bridge is completed?" Tupi asked. "Why did they not store it well, and can't they pay for the remaining bits?"
"Uhhh... they are still living in poverty, their homes are slowly getting rebuilt, and they say they are still poor, but I kind of feel that we are getting taken for a ride." Michael said. "Many of the villagers have bigger houses now, they added a third floor to their homes. So, you are right, they may be able to pay for the damaged materials and are just not doing it as suckers like us keep doing fundraising for them. "
"Ok." Tupi said.
"What do you mean ok?" Michael said.
"What else do you want to do?" Tupi asked. "If we believe that they can fund the materials and build their own bridge, then we should just drop it."
"What do you mean -- drop it?" Michael asked.
"How does it affect you if the bridge does not get built?" Tupi asked. "Are you angry that the bridge is not built because they cannot budget for nuts? We should allow them to pay for the remaining bits for the bridge."
"Wow, deep..." Michael said. "Travel has made you different... You were always so easy going and ok with everything."
"Unless its an ego thing where you want to show to people the bridge you built. " Tupi said. "Otherwise, just walk away. If its important to them, they will get it done."
"But they are poor..." Michael said.
"And yet they can build another floor." Tupi said.
"Oh ya..." Michael said and pondered for a few minutes. "Then I'll not do another round of fundraising for them. Thanks!"
"You were still thinking of another round for fundraising?" Tupi asked. "Its been years."
"Ya, but the bridge was not built yet." Michael said.
"You are too good..." Tupi said and they both laughed.
Posted by Iron Bowl at 3:17 AM 1 comment:
Tupi arrived in Singapore after a long flight. He felt accomplished but had also some doubts with some of the things he had done. Tupi had a lot of time to think on the government response and how some of the survivors are stuck because of the bad policies causing so much waste.
Tupi did his laundry and took a nap, the continued with some chores in the house. Tupi finished his chores and watched Netflix for an hour and felt much relaxed. "What should I do now?" Tupi asked and looked at his laptop. He pressed the power button and it could not be powered it. "Damn it," Tupi complained. It was an old notebook and the battery was dead and it took ages to power up. Tupi connected the cables, powered it on and took a shower while it was turning on.
"Back to this again." Tupi said as he dried himself with a towel and started to check some emails. "Its such a long time without using my computer." Tupi browsed through several job portals and looked for suitable jobs. He spent an hour and bookmarked several jobs to apply later.
"Ok, now I can do other things." Tupi said, feeling productive. Tupi checked his phone messages and to do list and found that he needed to call Michael. "Yup, sure, all chores done." Tupi muttered to himself.
"Hi Michael, its me, Tupi." Tupi called Michael on the phone. "I just got back."
"Wanna grab a drink?" Michael said. "I'll buy you a drink as promised."
"Sure, where?" Tupi asked.
"Any cravings for Singapore food?" Michael asked.
"Oh yes, BBQ Stingray!" Tupi said. "Lets go Chomp Chomp to have beer too!"


Northeastern International Airways was established in 1980. It inaugurated flight service between Long Island MacArthur Airport in Islip NY and Fort Lauderdale-Hollywood International Airport FL using a second-hand Douglas DC-8 aircraft. It expanded quickly acquiring additional aircraft and launching new routes targeting sunny vacation destinations.
In 1984 Northeastern leased some wide-body Airbus A300 aircraft but these were too large for the airline's route network and precipitated a financial crisis.
Northeastern International Airways initiated service cut-backs and lay-offs before finally filing for bankruptcy protection in 1985. Attempts to restart it failed and it was liquidated in 1986.


text:
Feature selection using genetic algorithms for fetal heart rate analysis.
Xu L., Redman CWG., Payne SJ., Georgieva A.
The fetal heart rate (FHR) is monitored on a paper strip (cardiotocogram) during labour to assess fetal health. If necessary, clinicians can intervene and assist with a prompt delivery of the baby. Data-driven computerized FHR analysis could help clinicians in the decision-making process. However, selecting the best computerized FHR features that relate to labour outcome is a pressing research problem. The objective of this study is to apply genetic algorithms (GA) as a feature selection method to select the best feature subset from 64 FHR features and to integrate these best features to recognize unfavourable FHR patterns. The GA was trained on 404 cases and tested on 106 cases (both balanced datasets) using three classifiers, respectively. Regularization methods and backward selection were used to optimize the GA. Reasonable classification performance is shown on the testing set for the best feature subset (Cohen's kappa values of 0.45 to 0.49 using different classifiers). This is, to our knowledge, the first time that a feature selection method for FHR analysis has been developed on a database of this size. This study indicates that different FHR features, when integrated, can show good performance in predicting labour outcome. It also gives the importance of each feature, which will be a valuable reference point for further studies.
10.1088/0967-3334/35/7/1357
Physiological measurement
Doctoral Training Centre, University of Oxford, Rex Richards Building, South Parks Road, Oxford OX1 3QU, UK. Nuffield Department of Obstetrics and Gynaecology, University of Oxford, Level 3, Women's Centre, John Radcliffe Hospital, Oxford OX3 9DU, UK. Department of Engineering Science, Institute of Biomedical Engineering, University of Oxford. Headington, Oxford OX3 7DQ, UK.
Humans, Fetal Diseases, Acidosis, Cardiotocography, Fetal Monitoring, Linear Models, ROC Curve, Pregnancy, Labor, Obstetric, Heart Rate, Fetal, Algorithms, Signal Processing, Computer-Assisted, Databases, Factual, Female


Your yard waste can do a lot of good if it stays put.
The fact that yard waste is banned from landfills isn't the only reason to keep it close to home. From grass clippings to tree and shrub pruning, much of the organic materials you trim from around your yard can be recycled right at your home—and make your landscape healthier and more beautiful in the process. Three easy ways to start? Recycle your grass clippings, generate your own mulch for planting beds, and set up a compost area.
Not sure where to start? Check out this handy guide on Greenscaping from the EPA.
Have Yard Waste and Nowhere to Put it?
Many municipal transfer stations accept yard waste—usually from residents only—and they grind it up and offer back to anyone in the area who wants fresh mulch or compost.
Find out where you can dispose of yard waste.
Have Yard Waste and Some Place to Put it?
Start composting your yard waste in your own backyard! Check out the Organics page for more information on backyard composting.